我继承了一个prestashop网站,并为所有必需的重定向设置了htaccess文件。我想允许访问dev子域,但htaccess会继续重定向到主站点。我试图允许使用我有限的知识和可靠的朋友google访问,但是当我上传编辑过的文件时出现500错误。
原始的重写是这样的
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.mysitename.com$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{HTTP_HOST} ^www.mysitename.com$
RewriteRule ^.*$ - [NC,L]
RewriteCond %{HTTP_HOST} ^www.mysitename.com$
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404
我试图在
之后添加RewriteCond%{HTTP_HOST} ^ www.mysitename.com $
这些行
RewriteCond %{HTTP_HOST} ^dev\.mysitename.com$
RewriteRule ^/(.*) http://dev.mysitename.com/index.php/$1 [L, QSA]
但我只是不断收到500错误并且无法进行实验,因为它会使网站脱机。当我试图了解有关重写的更多信息时,任何帮助都非常感激
答案 0 :(得分:0)
你的新行在现有的RewriteCond和RewriteRule对之间进行,并打破了它们的语法。尝试将您的行移到RewriteCond %{HTTP_HOST} ^www.mysitename.com$
行之上。
答案 1 :(得分:0)
这样做:
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mysitename\.com$
RewriteRule . - [E=REWRITEBASE:/]
RewriteRule ^api/?(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{HTTP_HOST} ^www\.mysitename\.com$
RewriteRule !(?:^|/)index\.php$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
#If rewrite mod isn't enabled
ErrorDocument 404 /index.php?controller=404