0

我想将查询参数重写为使用 .htaccess 分隔的斜线

示例重写

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

http:www.site.com/user/comfirm/x22xx22xxx

为此,我正在尝试这种方式

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

但它显示内部服务器错误。

还尝试了一些变化,例如更改/user/user/和这样。

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

但显示404错误

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

4

3 回答 3

0

有两个问题:

删除标志中的空格:[L,QSA]

模式也错了,试试这个:

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

调试 htaccess 问题的一种简单方法是检查您的 Web 服务器 (Apache) 日志,通常是 error_log 或 errors.log,具体取决于您的设置。

于 2013-07-04T14:17:03.740 回答
0

试试这个代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^user/confirm/([^/]+)/?$ /user/confirm/index.php?confirm=$1 [L,NC,QSA]

如果它不起作用,请在您的问题中发布您的完整 .htaccess。

编辑:建议的.htaccess:

Options +FollowSymlinks-MultiViews
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteRule ^user/confirm/([^/]+)/?$ /user/confirm/index.php?confirm=$1 [L,QSA,NC]

RewriteRule ^sitemap\.xml$ sitemap.php [L]

RewriteRule ^rss/(.+?)\.xml$ rss/$1.php [L]

RewriteRule ^([^/]*)/(.+?\.html)$ /software/?pflink=$1&pagelink=$2 [L,QSA,NC]
</IfModule>
于 2013-07-04T14:48:16.233 回答
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>

现在它的工作。希望这也能帮助其他人解决同样的问题。

于 2013-07-07T07:38:52.493 回答