【问题标题】:Tricky URL rewrite, regex .htaccess棘手的 URL 重写,正则表达式 .htaccess
【发布时间】:2009-06-05 18:02:22
【问题描述】:

我在为我的网站内部重定向一些 URL 时遇到了棘手的问题。

情况是这样的,我目前有一个类似example.com/check/youtube.com 的网址,它使用以下mod_rewrite 代码在内部重定向到check.php?domain=youtube.com

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]

RewriteRule ^offline offline.php [NC,L]
RewriteRule ^error error.php [NC,L]

RewriteRule ^check/(.*)$ check.php?domain=$1 [NC,L]

但是,我也希望能够使用example.com/youtube.com 之类的 URL 重定向到 check.php。不幸的是,我无法弄清楚。

我有一个目录/assets/,其中包含不应受到影响的所有 CSS、JS 等。

谢谢

【问题讨论】:

    标签: regex .htaccess


    【解决方案1】:

    试试这个规则:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^[^/.]+\.[^/]+$ check.php?domain=$0 [L]
    

    此规则会重写任何 URL 路径形式为 [^/.]+\.[^/]+(至少包含一个点但根本没有斜杠的字符串)的请求,这些请求无法映射到您的 check.php 的现有文件。

    【讨论】:

    • 非常感谢,很高兴您使用 $0,因为我以前从未见过使用过,我得查一下:P
    • $0 只是整个正则表达式的匹配字符串。
    • 啊,是的,这很有意义。再次感谢。
    【解决方案2】:

    当您要重定向“example.com/youtube.com”时,这是否意味着您希望重定向几乎所有内容?具体允许通过什么,例如我是否可以通过“example.com/youtube.com/foobar.php”重定向到 check.php?

    【讨论】:

    • 好吧,脚本在提交时会通过 js 进行清理(对于非 js 用户也有注释),所以如果您要提交 example.com/youtube.com/foobar。 php 然后它会刷新到 example.com/youtube.com。如果有人确实将该链接直接发送到脚本,那么它会返回 404。但我稍后会处理它,这不是问题。不过如果你可以用 .htaccess 来清理它,那会很酷......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多