我似乎总是遇到麻烦,无论我尝试什么,都无法让所有案例都能正确重定向。
我目前有
example.com/anything
正确地重定向到
example.com/track.php?memb=anything
基本上任何带有文件类型的url都应该忽略所有重定向。我在顶部还有一个子域规则,我认为它是正确实现的,不会干扰我想要添加的内容。所有这一切目前都正常使用以下代码:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule .* http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)? [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/? [NC]
RewriteRule .* track.php?memb=%1 [L,E=END]
我需要添加以下规则:
example.com/c/whatever
需要重定向到
example.com/page2.php?c=whatever
经过多次尝试和修改一些现行规则后,我似乎无法让它发挥作用,但我认为我很接近
RewriteRule ^c/(.*)$ page2.php?c=$1 [L,E=END]
答案 0 :(得分:1)
RewriteCond
仅对下一个RewriteRule
有效。此外,
RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)? [NC]
将匹配名称中包含.
的任何内容。由于最后有?
,扩展名是否有效名称无关紧要。
试试这个:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule .* http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)$ [NC]
RewriteRule ^c/([^/]+)/? page2.php?c=$1 [L,E=END]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(jpg|png|css|js|php)$ [NC]
RewriteRule ^([^/]+)/? track.php?memb=$1 [L,E=END]