我在同一个网站上有两个域名。
我的网站上有一个页面,我希望看起来来自第二个域(在此示例中,它是 example2.com/pagex )。除root和pagex外,对 example2.com 的所有其他请求都应重定向到 example1.com 。
由于下面显示的mod_rewrite规则,我网站上的所有网页都显示为目录,但实际上只是 index.php?page = pagename 。
这是我的.htaccess文件:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example2\.com [NC]
RewriteCond %{REQUEST_URI} !^/$ #Do not redirect root
RewriteCond %{REQUEST_URI} !^/pagex/ #Do not redirect pagex
RewriteRule ^(.*)$ http://www.example1.com/$1 [R=301]
# If the file or folder does not exist, send to index.php as variable
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ /index.php?page=$1 [L]
转到 example2.com/pagex / 运行上述代码我将重定向到 www.example1.com/index.php?page=pagex 。第二个条件应该失败,阻止重定向。更奇怪的是虚拟目录已被实际路径取代。
答案 0 :(得分:1)
您可以这样编写规则:
RewriteEngine on
Options +FollowSymlinks -MultiViews
RewriteCond %{HTTP_HOST} ^(www\.)?example2\.com [NC]
RewriteCond %{THE_REQUEST} !/pagex/? [NC]
RewriteRule ^(.+)$ http://www.example1.com/$1 [R=301,L]
# If the file or folder does not exist, send to index.php as variable
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ /index.php?page=$1 [L]
上面的代码http://example2.com/pagex/
被正确地重定向到http://example2.com/index.php?page=pagex