使用mod_rewrite用斜杠重写get参数

时间:2014-09-26 22:33:29

标签: apache .htaccess mod-rewrite

我的网站有一些独立的网页(如signup.php)和一个主要的PHP文件,它使用GET参数显示其余页面。

我希望将HTTP请求重写到服务器,以便执行以下请求:

http://example.com/website/settings/会显示页面

http://example.com/website/index.php?page=settings,不影响所有其他网页。

我对mod_rewrite很新,我的所有尝试都产生了404或500响应代码。编写RewriteCond和RewriteRule的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

在文档根目录中的htaccess文件中添加这些规则(website文件夹所在的位置):

RewriteEngine On

RewriteCond %{THE_REQUEST} \ /+website/(?:index\.php|)\?page=([^&]+)/(&|\ |$)
RewriteRule ^ /website/%1/ [L,R]

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

或者您可以将这些规则放在website文件夹中,如果这更有意义:

RewriteEngine On
RewriteBase /website/

RewriteCond %{THE_REQUEST} \ /+website/(?:index\.php|)\?page=([^&]+)/(&|\ |$)
RewriteRule ^ %1/ [L,R]

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