我正在努力解决关于apache的特定重写规则。更确切地说,我很难理解它有什么问题。
我需要像这样重写网址:
http://www.mysite.com/section/venue_info/123/name
or
http://www.mysite.com/section/venue_info/123/
or
http://www.mysite.com/section/venue_info/123
|
V
http://www.mysite.com/section/venue_info.php?id=123
请注意,section
是等式中的变量。在实时站点中,它可以是多个值中的一个,因此无论提供哪个部分,我都需要使用该部分。我在apache配置中得到了这个:
DocumentRoot /var/www/site/trunk/publish
<Directory /var/www/site/publish/trunk/>
Options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
RewriteEngine on
RewriteBase /
RewriteRule ^\/(\w+)\/venue_info\/(\d+)(\/.+|\/?)$ $1/venue_info.php?id=$2
</Directory>
但是这不匹配。我尝试了各种各样的变化,但没有运气。这里有什么权利RewriteRule
?任何帮助表示赞赏。
答案 0 :(得分:0)
好的,想通了!
显然,mod_rewrite
指令在<Directory>
元素内不起作用。一旦我将它们放入<Location>
区块,一切正常。所以现在我的apache配置看起来像这样:
DocumentRoot /var/www/site/trunk/publish
<Directory /var/www/site/publish/trunk/>
Options -Indexes +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Location "/">
RewriteEngine on
RewriteBase /
RewriteRule ^\/(\w+)\/venue_info\/(\d+)(\/.+|\/?)$ $1/venue_info.php?id=$2
</Location>
一切正常。