.htaccess重定向不使用子目录的index.php

时间:2013-07-06 05:34:54

标签: .htaccess

我有一个像root/user/confirm/index.php

这样的目录结构

我想像

那样进行重定向

重定向此网址

http://www.site.com/user/confirm/ASd2sasda4ass

到此

http://www.site.com/user/confirm/index.php?confirm=ASd2sasda4ass

我正在尝试这种方式

RewriteRule /user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA]

它正确地重定向此网址

http://www.site.com/user/confirm/index.php/ASd2sasda4ass

http://www.site.com/user/confirm/index.php?confirm=ASd2sasda4ass

但没有index.php

,请不要使用此网址
http://www.site.com/user/confirm/ASd2sasda4ass

显示404未找到错误

请参阅并建议任何可行的方法。

感谢。

更新

完整代码

Options +FollowSymlinks 
RewriteEngine on 
<IfModule mod_rewrite.c> 
RewriteRule /user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA] 
</IfModule>

2 个答案:

答案 0 :(得分:1)

试试这个(在网址中没有confirm.php。无论如何你不应该需要它):

RewriteRule ^user/confirm/(.*)/? user_confirm.php?confirm=$1 [L]

答案 1 :(得分:0)

我通过从root .htaccess

中删除此重写规则解决了这个问题
RewriteRule ^/user/confirm/([^A-Za-z0-9])$ /user/confirm/index.php?confirm=$1 [L,QSA]

将另一个.htaccess文件放在confirm目录中以隐藏index.php并使用以下代码处理查询参数。

Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?confirm=$1 [L]
</IfModule>

现在它的工作没有index.php在url中。希望这也能帮助其他人解决同样的问题。