2012-12-07 49 views
1

我有一个动态网页,获得了“P”参数来显示内容:这个htaccess重写规则有什么问题?

m.mydomain.com/index.php?p=key 

我想某种干净的URL。

这是我的实际的htaccess:

AddType x-mapp-php5 .php 

RewriteEngine On 
RewriteRule ^(.*)/$ index.php?p=$1 [QSA,L] 

这样:

m.mydomain.com/key -> doesn't work (404 page) 
m.mydomain.com/index/key -> blank page 

如何获得m.mydomain.com/key?

请帮助我,我要疯了!

回答

0
RewriteEngine On 
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L] 

我已经测试和工作

0

一个问题,我看到的是,你重写规则将捕捉到的index.php直接调用,并尝试重定向

m.mydomain.com/index.php 

m.mydomain.com/index.php?p=index.php 

您可以通过首先使用单独的重写规则捕获“index.php”路径来避免这种情况,该重写规则看起来像t他的:

RewriteRule ^(index.php) - [L] 

但我不认为缺乏这应该是导致您的问题。也许在另一个干扰的.htaccess或web服务器配置文件中有另一个规则?我问,因为我没有什么问题如下:

# .htaccess 
RewriteEngine On 
RewriteRule ^(index.php) - [L] 
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L] 

注:我拿出将AddType X-MAPP-PHP5 .PHP,因为这不是我的设置工作了。我不知道这是否与您的问题或没有,但你可能想包装在一个<IfModule>是安全的,因为在How to support "AddType x-mapp-php5 .php" on my development machine

建议这一切结合在一起,这(也)工作对我来说:

# .htaccess 
<IfModule !mod_php5.c> 
AddType x-mapp-php5 .php 
</IfModule> 

RewriteEngine On 
RewriteRule ^(index.php) - [L] 
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L] 
+0

我已经更新了我的问题...是否很难? :/ – Christian