我在尝试为生产/实时环境设置多个RewriteBase目录时遇到问题。我遵循了以下提供的指导:
Many RewriteBase in one .htaccess file?
With mod_rewrite can I specify a RewriteBase within a RewriteCond?
除非基本目录是根目录(即" /"),否则大致似乎有效:
RewriteCond %{HTTP_HOST} ^localhost/tla-test/(.)$ [OR]
RewriteCond %{HTTP_HOST} ^192.168.0.200/tla-test/(.)$
RewriteRule ^(.*)$ tla-test/index.php&page=$1 [L]
RewriteCond %{HTTP_HOST} ^test.townshendla.com/(.)$
RewriteRule ^(.*)$ /index.php&page=$1 [L]
#Send any reqests to the index.php file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php
第一次重写条件完美无缺。第二次重写条件一旦出现就会出现错误500.因为它的1和1我无法获得Apache错误日志但如果我尝试在测试环境中复制,我会收到以下错误(请注意这可能无关):
AH00124:请求超出了10次内部重定向的限制 可能的配置错误。使用' LimitInternalRecursion'增加 必要时限制。使用' LogLevel debug'获得回溯。
任何想法都会非常感激。
答案 0 :(得分:0)
感谢您的帮助。首先anubhava你对HTTP_HOST是正确的,其次Walf你的指针非常宝贵,它引导我到这个页面,详细解释了一个有类似问题的人:
Mod_Rewrite unexpected behavior L flag
总的来说,问题似乎是文件/目录检查进入循环,似乎解决这个问题的代码是:
RewriteCond %{HTTP_HOST} ^(localhost|192.168.0.200)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tla-test/index.php?page=$1
RewriteCond %{HTTP_HOST} !^(localhost|192.168.0.200)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?page=$1
由于
休