无法在 .htaccess 中为我的 php 网站编写重写规则
Posted
技术标签:
【中文标题】无法在 .htaccess 中为我的 php 网站编写重写规则【英文标题】:Unable to write a rewrite rule in .htaccess for my php website 【发布时间】:2014-02-17 01:16:05 【问题描述】:我的网站是 v2.example.com,我正在尝试编写 .htaccess 规则但无法。
我想要这个:v2.example.com/ABCDEFGH
我想将值 ABCDEFGH 作为参数获取,例如 v2.example.com/index.php?id=ABCDEFGH
谁能帮我解决这个问题。
我试过这个:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*) index.php?id=$1 [L]
</IfModule>
请帮帮我。
【问题讨论】:
【参考方案1】:RewriteEngine on
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
这将在进入无限循环时崩溃,因为 index.php 被进一步重写为 index.php?id=index.php 等等
解决方案
RewriteEngine on
RewriteRule ^([^_]*)$ _index.php?id=$1 [L,QSA]
即创建页面_index.php
,并将所有没有_
的页面重写到该页面,这样就不会陷入无限循环,如果你认为你会选择~
而不是_
在你的参数中需要 _
【讨论】:
【参考方案2】:你的规则是这样的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# external redirect from actual URL to pretty one
RewriteCond %THE_REQUEST \s/+index\.php\?id=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]
# internal forward from pretty URL to actual one
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.+)$ index.php?id=$1 [L,QSA]
</IfModule>
【讨论】:
以上是关于无法在 .htaccess 中为我的 php 网站编写重写规则的主要内容,如果未能解决你的问题,请参考以下文章