这个htaccess重写规则有什么问题?

时间:2012-12-07 11:29:06

标签: .htaccess redirect

我有一个动态页面,其中显示“p”参数以显示内容:

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

我想要一些干净的网址。

这是我真正的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?

请帮帮我,我疯了!!!

2 个答案:

答案 0 :(得分:0)

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

我已经过测试和工作

答案 1 :(得分:0)

我看到的一个问题是你的RewriteRule会捕获对index.php的直接调用,并尝试重定向

m.mydomain.com/index.php 

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

您可以通过首先使用单独的重写规则捕获“index.php”路径来阻止这种情况:

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]