0

我有这个非常基本的重写规则,无论我尝试什么,都会导致错误 500。

RewriteEngine On
RewriteRule ^folder/(.*) /folder/index.php?Alias=$1 [L]

我的 httpd.conf 文件有以下内容:(这对我来说似乎没问题)

<Directory "/var/www/html">
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
   <IfModule mod_suphp.c>
        suPHP_Engine On
        suPHP_UserGroup webapps webapps
    SetEnv PHP_INI_SCAN_DIR
   </IfModule>
</Directory>

关于可能出现问题的任何建议?我还尝试$在我的重写规则末尾添加。

4

1 回答 1

1

重写引擎将重复循环,直到 URI 停止更改,或者达到内部重定向限制,从而引发 500 错误。您的规则的目标 URI/folder/index.php将被扔回重写引擎,并且您的相同规则的正则表达式匹配它,^folder/(.*). 所以你需要添加某种条件来防止循环。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder/index\.php
RewriteRule ^folder/(.*) /folder/index.php?Alias=$1 [L]

这很简单,如果规则已经以/folder/index\.php. 你也可以试试:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder/(.*) /folder/index.php?Alias=$1 [L]

这对条件的限制要小一些。仅当请求的 URI 未映射到现有文件或目录时才应用该规则。这假定当您尝试访问时没有/folder/blahblah目录或文件,并且您希望通过 index.php 路由它。blahblah

于 2013-01-15T13:14:34.243 回答