.htaccess规则将所有网址重定向到同一位置

时间:2015-01-28 15:40:05

标签: php apache .htaccess mod-rewrite redirect

我正在尝试修改一个重定向规则,但它并不像我想要的那样工作。也许有人可以调查并提出需要纠正的建议。

我有这条规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/$ /page.php?id=$1 [L]

规则会将www.site.com/page.php?id=one重定向到www.site.com/one/,这是我需要做的。

但是,相同的规则会将www.site.com/about-us/等所有其他网页重定向到www.site.com/page.php?id=

规则中需要更改哪些内容才能重定向我想要的页面,而不是所有其他页面?

2 个答案:

答案 0 :(得分:0)

您可以限制您的规则:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(one|two|three)/$ /page.php?id=$1 [L,QSA]

答案 1 :(得分:0)

我能想到的唯一方法是在要忽略或重写的URL中插入一个标识符键。

e.g。下面的代码将按http://www.example.com/one-1/

重写http://www.example.com/page.php?id=one-1
RewriteRule ^([a-zA-Z0-9-_]+)-([0-9]+)/$ /page.php?id=$1 [L]