2014-09-26 88 views
0

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

我希望HTTP请求重写到服务器,这样,像一个请求:

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

​​,而不会影响所有其他网页。

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

回答

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] 
+0

似乎工作很好,非常感谢! – mittelmania 2014-09-27 06:44:29