如何从url中删除www并同时使用子文件夹?

时间:2015-02-18 13:30:18

标签: php apache .htaccess mod-rewrite url-rewriting

我对URL重写没有或很少了解。我在HostGator上使用多域主机并遇到问题。我想将每个网站放在一个包含主域名的文件夹中。

所以我想把我的网站放在

public_html/site1
public_html/site2
public_html/site3

HostGator说我的主域必须指向public_html文件夹,我不能直接指向site1文件夹。我需要在这里使用url重写。我不想在我的主域名网址中使用www,我想从子目录运行该网站。

有人可以给我完整的代码吗?我的主要问题是主域。我可以管理的辅助域名。

3 个答案:

答案 0 :(得分:0)

此代码适用于将主域名重定向到site1.com到子目录/site1

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteCond %{REQUEST_URI} !^/site1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1
RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteRule ^(/)?$ site1/index.php [L]

但我仍然无法从我的主域名网址中删除www.

答案 1 :(得分:0)

试试这个

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

答案 2 :(得分:0)

我没有对此进行测试,但它是您原始代码和Swaraj的答案的组合:

RewriteEngine on

# Remove www. from primary domain
# per Swaraj's answer
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=302,QSA,NC,L]

# Per your code, rewrite to site1 directory
RewriteCond %{HTTP_HOST} ^site1.com$
RewriteCond %{REQUEST_URI} !^/site1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1

# Per your code, show primary domain root
RewriteCond %{HTTP_HOST} ^site1.com$
RewriteRule ^(/)?$ site1/index.php [L]