0

我正在为 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地方?任何帮助表示赞赏。

4

1 回答 1

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>

一切正常。

于 2012-07-02T14:59:05.087 回答