我有一个动态页面,其中显示“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?
请帮帮我,我疯了!!!
答案 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]