嗨,Stackoverflow的人,
我老老实实地在这里搜索并尝试了一些东西,但由于我真的不是专家而且没有任何工作,我迷失了,需要你的帮助。我不经常在这里发帖,因为通常我找到了我想要的东西。
我在同一台服务器上运行不同的网站。假设我的一个网站叫做Cats。它与CMSMS一起运行并驻留在我的根的子文件夹中,名为cats.com
。
在我的服务器的根目录中有一个带有此代码的htaccess文件(由服务器管理员生成):
RewriteCond %{HTTP_HOST} ^www.cats.com$
RewriteCond %{REQUEST_URI} !^/cats.com/
RewriteRule (.*) /cats.com/$1
RewriteCond %{HTTP_HOST} ^cats.com$
RewriteCond %{REQUEST_URI} !^/cats.com/
RewriteRule (.*) /cats.com/$1
在cats.com子文件夹中有一个htaccess文件,其中包含重写代码:
# RewriteBase /cats.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
这很有效。当我请求www.cats.com时,我在根目录中看到了/cats.com子文件夹的内容,但URL基础保持在www.cats.com,所有的URL都非常漂亮。
但是,由于我网站配置文件中的设置错误(我的错误),Google中列出的网址是
http://www.root.com/cats.com
当我点击网址时,我看到了正确的网页,但地址栏显示为http://www.root.com/cats.com
。漂亮的URL重写有效,但我希望这个URL重写为www.cats.com
。
我尝试用
重写Google列出的网址我在htaccess文件中尝试了这一点,低于现有的重写规则。
RewriteRule ^/cats.com(.*)$ http://www.cats.com [R=301,L]
RewriteRule ^/cats.com/(.*)$ http://www.cats.com/$1 [R=301,L]
什么都没发生。一切都保持不变。
再次在htaccess文件中,在现有重写规则之下和之上尝试了这个
Redirect 301 /cats.com http://cats.com
这导致在所有场合都有无限循环。
我希望我的描述足够清楚......
如果有人知道什么可能/应该有用,我很乐意听到它。
感谢您的帮助!
答案 0 :(得分:0)
将cats.com
子文件夹的htaccess
文件中的规则更改为:
RewriteEngine On
RewriteBase /cats.com/
RewriteCond %{THE_REQUEST} /+(cats\.com)/(\S+) [NC]
RewriteRule ^ http://%1/%2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]