1

我的 .htaccess 中有一个重写规则。

RewriteRule ^(.+?)$ /user_home.php?domain=$1 [L,QSA]

哪个重定向mysite.com/mypagemysite.com/user_home.php?domain=mypage

这在我的共享主机上运行良好,但是在本地工作时,我的站点位于www/mysite/而不是重定向到www/mysite/user_home.php?domain=mypage它,而是尝试重定向到www/user_home.php?domain=mypage不存在的站点。

我的 Apache 日志中出现以下错误

[error] [client ::1] script 'C:/wamp/www/user_home.php' not found or unable to stat

如何更改我的 .htaccess 以使其使用相对路径而不是绝对路径直接指向当前目录中的文件。

4

3 回答 3

1

You just need to remove leading slash from the target URL in your rule like this:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?)/?$ user_home.php?domain=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f is also needed to prevent infinite looping.

于 2013-07-22T11:15:17.327 回答
0

试试这个代码:

RewriteBase /mysite/
RewriteRule ^(.+?)$ /user_home.php?domain=$1 [L,QSA]

您只需添加一个RewriteBase与您网站的根文件夹的路径。

于 2013-07-22T08:50:46.917 回答
0

最好的解决方案是添加检查是否有这样的文件并设置 RewriteBase:

RewriteEngine On
RewriteBase mysite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+?)$ /user_home.php?domain=$1 [QSA,L]
于 2013-07-22T11:28:10.887 回答