mod_rewrite不转发到新的URL

时间:2014-08-22 23:47:00

标签: php apache .htaccess mod-rewrite

我几乎到处都读过,我禁用了MultiViews,a2enmods重写,以及我能找到的其他几乎所有内容。

我的.htaccess文件:

RewriteEngine on
RewriteRule ^PHP/ig/profile.php?user=([A-Za-z0-9]+)$ /PHP/ig/profile/$1 [L]

我的网站配置:

<VirtualHost *:80>
    ServerAdmin admin@espionage.pw
    DocumentRoot /var/www/espionage.pw/public_html
    ServerName espionage.pw
    ServerAlias www.espionage.pw
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/espionage.pw/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

我的.htaccess文件位于/var/www/espionage.pw/ 我可以确认它正在被读取,因为当我输入随机字符时,尝试连接到我的网站时出错。

我只是不知所措。请提出任何可能有用的建议。我一整天都在这上班,我开始生气了......

感谢您的帮助。

编辑: 我在error.log中也有一个错误 [[8月22日星期五19:00:35.168341 2014] [谈判:错误] [pid 20230] [客户端myip:62633] AH00687:协商:发现文件匹配的请求:/var/www/espionage.pw/public_html/PHP / ig / profile(无可协商)。

我删除了MultiViews,所以这应该已经解决了。

我也尝试过:

RewriteRule ^/PHP/ig/profile.php$ /PHP/index.php [L]

没有将/PHP/ig/profile.php重写为/PHP/index.php

2 个答案:

答案 0 :(得分:1)

您的文档根目录是:

DocumentRoot /var/www/espionage.pw/public_html

并说明您的.htaccess文件位于文件夹中:

/var/www/espionage.pw

Apache永远不会提供来自/var/www/espionage.pw的文件,因为它不是文档根目录的一部分,因此根本不会读取或使用您的.htaccess文件。

如果要将.htaccess文件限制在子文件夹中,则需要将/var/www/espionage.pw/public_html文件放在{{1}}文件夹或该文件夹中的文件夹中。

答案 1 :(得分:0)

只是为了确定,因为没有张贴完整的.htaccess ...你放了吗

RewriteEngine On
在规则之前