繁体   English   中英

.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标志用于停止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM