强制https和非www url,不在子域中工作

时间:2015-04-13 07:38:28

标签: .htaccess mod-rewrite

在我的主网站public_html的根文件夹thesite.com文件夹中,我有这个htaccess文件:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^m\.thesite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^blog\.thesite\.com$ [NC]
RewriteRule ^ - [L]

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} ^www\.thesite\.com [NC]
RewriteRule ^(.*)$ https://thesite.com/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^category/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ category\_product\_list.php?mid=$1&sid=$2&did=$3 [L]
RewriteRule ^category/([^/\.]+)/([^/\.]+)/?$ category\_product\_list.php?mid=$1&sid=$2 [L]
RewriteRule ^category/([^/\.]+)/?$ category\_product\_list.php?mid=$1 [L]


RewriteRule ^p/([^/\.]+)/([^/\.]+)/([0-9]+)/([0-9]+)/([0-9]+)/?$ product.php?id=$2&vid=$3&mid=$4 [L]                                                
RewriteRule ^p/([^/\.]+)/([^/\.]+)/([0-9]+)/([0-9]+)/?$ product.php?id=$2&vid=$3 [L]                                                                
RewriteRule ^p/([^/\.]+)/([^/\.]+)/([0-9]+)/?$ product.php?id=$2 [L]

RewriteRule ^offer/(.*) product_offer.php?ind=$1


RewriteRule ^([^/\.]+)/?([^/\.]*)/?$ $1.php [QSA,L]

此处,我强制使用非www网址以及强制https的{​​{1}}网址。我有两个子域:thesite.comm.thesite.com。 两者都位于blog.thesite.com内的单独子文件夹中。

public_html位于m.thesite.com文件夹中。它有这个htaccess文件:

/public_html/m.thesite.com/

对于这个子域名,我还需要强制使用https网址以及非www网址。

它似乎适用于主站点。我的意思是RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^www\.m\.thesite\.com [NC] RewriteRule ^(.*)$ https://m.zapteka.com/$1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^category/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ category\_product\_list.php?mid=$1&sid=$2&did=$3 [L] RewriteRule ^category/([^/\.]+)/([^/\.]+)/?$ category\_product\_list.php?mid=$1&sid=$2 [L] RewriteRule ^category/([^/\.]+)/?$ category\_product\_list.php?mid=$1 [L] RewriteRule ^p/([^/\.]+)/([^/\.]+)/([0-9]+)/([0-9]+)/([0-9]+)/?$ product.php?id=$2&vid=$3&mid=$4 [L] RewriteRule ^p/([^/\.]+)/([^/\.]+)/([0-9]+)/([0-9]+)/?$ product.php?id=$2&vid=$3 [L] RewriteRule ^p/([^/\.]+)/([^/\.]+)/([0-9]+)/?$ product.php?id=$2 [L] RewriteRule ^([^/\.]+)/?([^/\.]*)/?$ $1.php [QSA,L] RewriteRule ^offer/(.*) product_offer.php?ind=$1 。但是当我尝试访问thesite.com时,它似乎在内部重定向到m.thesite.com而不是thesite.com的文件。我的意思是网址显示为m.thesite.com,但页面来自https://m.thesite.com/

我一直试图将问题调试几个小时。可能它可能是我错过的小事。有什么想法吗?

BTW,https://thesite.com正在安装通配符SSL。

修改

很抱歉,如果我的解释令人困惑。当我说网址显示为thesite.com但内容来自https://m.thesite.com/时,我的意思是说在浏览器中,网址显示为https://thesite.com/。但模板文件的内容来自主站点https://m.thesite.com的桌面版本。 thesite.com是该网站的移动版本。显示站点桌面和移动版本中单独内容的页面。

就像您在上面包含的htaccess代码中看到的那样,桌面版本的m.thesite.com文件夹中有一些PHP文件。该网站移动版的所有文件都在/public_html/文件夹中。

因此,简而言之,当我尝试访问/public_html/m.thesite.com/时,它会显示https://m.thesite.com/而不是index.php

/public_html/index.php页面

这就是我如何发现路由中的问题。

修改

使用此命令/public_html/m.thesite.com/

获取的VirtualHost条目

enter image description here

我还检查了Apache版本,并使用以下命令查看了它/usr/local/apache/bin/httpd -S2.2.27

所以我尝试在htaccess文件中添加这一行:

httpd -V

但它给出了内部服务器错误。所以我也尝试了这一行:

RewriteLog "/logs/rewrite.log"
RewriteLogLevel 9

访问网站时,这也给了我内部服务器错误。所以我评论了它。

0 个答案:

没有答案