Php .htaccess文件重写规则检查

Php .htaccess文件重写规则检查,php,.htaccess,codeigniter,open-source,Php,.htaccess,Codeigniter,Open Source,我想重写我的apache mod_重写模式。我过去常做以下事情: RewriteEngine on RewriteRule /^([^A-Z0-9a-z]+)\.html /search.php?search_id=$1&%{QUERY_STRING} 按照上述规则,我无法得到我所期望的。 谁能告诉我的代码有什么问题以及如何解决 编辑。 我的要求很简单。 如果我输入/1.html到/search.php?search\u id=1,我想重定向 就是这样。您的规则有输入错误,请尝试以下操

我想重写我的apache mod_重写模式。我过去常做以下事情:

RewriteEngine on
RewriteRule /^([^A-Z0-9a-z]+)\.html /search.php?search_id=$1&%{QUERY_STRING}
按照上述规则,我无法得到我所期望的。 谁能告诉我的代码有什么问题以及如何解决

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


就是这样。

您的规则有输入错误,请尝试以下操作:

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}

这使得前导斜杠是可选的。

如果规则中有输入错误,请尝试以下操作:

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}
这使得前导斜杠是可选的。

这应该可以:

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
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]

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

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

RewriteEngine On
#RewriteBase /
RewriteRule ^([A-Za-z0-9]+)\.html/?$ /search.php?search_id=$1 [NC, L]
我用RewriteBase作为评论。如果使用共享服务器,则将其保留为注释或删除该行


编辑:[NC,L]用于说明,规则的NC标志不需要区分大小写(无大小写),如果匹配,则L标志表示停止。

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

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

RewriteEngine On
#RewriteBase /
RewriteRule ^([A-Za-z0-9]+)\.html/?$ /search.php?search_id=$1 [NC, L]
我用RewriteBase作为评论。如果使用共享服务器,则将其保留为注释或删除该行


编辑:[NC,L]用于说明,规则的NC标志不需要区分大小写(无大小写),如果匹配,则L标志表示停止。

您期望的是什么?@faa我已经编辑了我的问题。请检查。您期望的是什么?@faa我已经编辑了我的问题。请检查。