.htaccess url重写 - 仅限某些文件的例外

时间:2013-05-28 19:57:32

标签: .htaccess url-rewriting

这是我的.htaccess:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteCond %{REQUEST_FILENAME} !\.php$ [NC]
RewriteRule ^([^/]+)/?$ index.php?page=$1  [QSA]

基本上如果你输入/ test,它会完美地工作,如果你去/test.php,它将显示没有重写规则的PHP页面,这是我只需要某些页面。

让我们说有一些页面(一些)我希望能够(加载整个.php页面),但所有其他页面,我想要的是如果有人去/contact.php ,它重定向到/联系,到右边。

所以让我们说“result.php”和“search.php”,我希望它能够加载整个PHP页面,但对于其余部分,我希望它重定向到正确的地址(所以/ contact .php => / contact)。

我怎么能这样做?基本上我需要为几页(我自己确定)添加这个RewriteRule(RewriteCond %{REQUEST_FILENAME} !\.php$ [NC]),而对于其他页面我需要另一个RewriteCond(将所有“test.php”重定向到“试验“)

非常感谢!

1 个答案:

答案 0 :(得分:0)

你可以将所有这些异常放在你的第一个RewriteCond中并改变第二个RewriteCond来跳过这样的真实文件和真实目录:

RewriteCond %{REQUEST_URI} !/(index|result|search)\.php [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /index.php?page=$1 [QSA,L]