.htaccess 文件重写规则检查


.htaccess file rewrite rule check

我想重写我的 apache mod_rewrite模式。我习惯于以下工作:

RewriteEngine on
RewriteRule /^([^A-Z0-9a-z]+)'.html /search.php?search_id=$1&%{QUERY_STRING}

有了上面的规则,我无法得到我所期望的。谁能说出我的代码出了什么问题以及如何解决它。

编辑。我的要求很简单。如果我输入/1.html 我想重定向到/search.php?search_id=1

就是这样。

这应该有效:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !search'.php
RewriteCond %{REQUEST_URI}  ^/([0-9]+)'.html [NC]
RewriteRule  .*    search.php?search_id=%1    [L,QSA]

静默地图

http://example.com/FileID.html

自:

http://example.com/search.php?search_id=FileID

search.php被视为固定字符串,而FileID可以是任何数字。

对于永久重定向,请将[L,QSA]替换为[R=301,L,QSA]

你的规则中有拼写错误,试试这个:

RewriteEngine on
RewriteRule ^/([^A-Z0-9a-z]+)'.html /search.php?search_id=$1&%{QUERY_STRING}

顺便说一下,你也可以尝试使用它:

RewriteRule ^/?([^A-Z0-9a-z]+)'.html /search.php?search_id=$1&%{QUERY_STRING}

这使得前导斜杠可选。

您是否在域后键入 1.html?也就是说,如果您的域 example.com,那么您键入 example.com/1.html?如果是你正在做,那么不要在 .htaccess 文件中的正则表达式之前使用/。

尝试将以下内容添加到主 .htaccess 文件中。它位于包含您网站主页的目录中:

RewriteEngine On
#RewriteBase /
RewriteRule ^([A-Za-z0-9]+)'.html/?$ /search.php?search_id=$1 [NC, L]

我使用RewriteBase作为评论。如果您使用共享服务器,请将其保留为注释或删除该行。

编辑:[NC,L]用于告诉,规则的NC标志不需要区分大小写(没有大小写),如果匹配,则L标志用于停止。