0

我有一个像这样的目录结构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 not found 错误

请查看并建议任何可能的方法来做到这一点。

谢谢。

更新

完整的代码

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

2 回答 2

0

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

RewriteRule ^user/confirm/(.*)/? user_confirm.php?confirm=$1 [L]
于 2013-07-06T06:42:24.610 回答
0

我通过从根 .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.phpurl 的情况下工作。希望这也能帮助其他人解决同样的问题。

于 2013-07-06T07:25:34.143 回答