2013-07-21 26 views
1

我的.htaccess中有一个重写规则。Apache,.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,使其使用相对路径,而不是绝对路径直接到当前目录中的文件..

+0

'/mysite/user_home.php域= $ 1' ... – Ohgodwhy

+0

,将解决本地的问题,但我更喜欢有一个更通用的解决方案,也可以在现场服务器上工作,而无需更改它。 –

+3

我非常怀疑你会找到一个“全部捕捉”解决方案,因为目录结构在环境之间变化。不要在本地和产品之间推送.htaccess文件。 – Ohgodwhy

回答

1

你只需要从目标URL删除斜线在您的规则是这样的:还需要

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

RewriteCond %{REQUEST_FILENAME} !-f防止无限循环。

0

试试这个代码:

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

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

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]