0

我似乎总是遇到麻烦,无论我尝试什么,我都无法让所有案例都正确重定向。

我目前有

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]
4

1 回答 1

1

RewriteCond只对下一个有效RewriteRule。还,

RewriteCond %{REQUEST_URI}  !\.(jpg|png|css|js|php)?  [NC]

将匹配名称中带有 a.的任何内容。由于您?最后有 a,因此扩展名是否具有有效名称并不重要。

尝试这个:

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]
于 2013-05-27T06:44:44.653 回答