我正在尝试在我的项目中使用一些规则从www
的开头删除URL
,但我遇到了一些问题。
我的服务器结构是:
domain.com/beta_folder
domain.com/beta_folder/page+type
domain.com/beta_folder/page+type/content+name
domain.com/beta_folder/page+type/content+name/edit
domain.com/beta_folder/page+type/content+name/etc.
domain.com/beta_folder/.htaccess //here is where my htaccess is
beta_folder
是站点文件夹,content+name
是内容变量,用于从数据库中检索页面。
该网站完善了这条规则
RewriteEngine On
RewriteRule ^(page\+type/)([a-zA-Z0-9_+-]+)[/]?$ page_folder/page.php?varname=$2
我的目的是删除www
,因此我添加了此规则,但效果不佳
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com$1 [R=301,L]
RewriteRule ^(page\+type/)([a-zA-Z0-9_+-]+)[/]?$ page_folder/page.php?varname=$2
如果我在我的域名前面加www
,我的问题就出现了:
这是有效的
http://domain.com/beta_folder/page+type/content+name
如果我写
http://www.domain.com/beta_folder/page+type/content+name
重写规则重定向我
http://www.domain.compage+type/content+name
如果我删除www
规则,问题仍然有效
不幸的是,我无法对我的域进行公开测试
基本上,如果我写 http://www.domain.com/beta_folder
规则将我发送给
http://domain.com/
我找到解决问题的唯一方法是编写我的网站所在的文件夹,所以:
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/beta_folder/$1 [R=301,L]
我没有理解为什么我应该写这个文件夹,因为我的重写cond会影响
http://www.domain.com/folder_name/contents
而非http://www.domain.com/contents
为什么folder_name
从重写中丢失了?
答案 0 :(得分:0)
试试这个,略微不同的规则示例:
RewriteCond %{HTTP_HOST} !^www.domain\.com$
RewriteRule (.*) http://domain.com/$1 [R=301,L]
如果这不能解决您的问题,请大声喊出来。