我有一系列mod_rewrite指令(如下面的代码1所示),它通过自定义PHP应用程序运行每个服务器请求。
代码1
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]
在我进入mod_rewrites的最后一步之前,我需要将对mydomain.com的任何请求更改为mydomain.org。下面的代码2显示了我的想法,但它不起作用。该请求给了我500内部服务器错误。
代码2
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule ^ http://mydomain.org%{REQUEST_URI}
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]
有人可以提出建议吗?感谢
答案 0 :(得分:1)
我认为您的网站可以通过两个域访问,但您希望所有对您网站的请求都重定向到其中一个域。然后正确的代码是:
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]
您应该将该代码直接放在重定向行之后。
如果没有给出主机,第二行确保没有重定向(在这种情况下防止重定向循环)。
第三行中的[R = permanent,L]使其成为永久重定向并阻止任何进一步的规则处理。一旦重定向发生,其他规则将被处理。
完整的文件将是:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]
答案 1 :(得分:0)
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]