【问题标题】:How to set up Apache mod_rewrite redirect rules?如何设置 Apache mod_rewrite 重定向规则?
【发布时间】:2014-10-01 11:44:29
【问题描述】:

我对 Apache 设置不太熟悉。我需要让网站加载除一页以外的子目录内容。

目前有一个网站,需要对http://www.domain.comhttp://domain.com进行所有调用,从http://www.domain.com/subfolder加载内容(但看起来像http://www.domain.com

只有http://www.domain.com/checkout 页面除外,这一页面应重定向到https://www.domain.com/checkout 以进行安全结帐

当前的mod_rewrite如下图:

RewriteEngine on

RewriteRule ^$ domain/index.php [L]
RewriteCond %{DOCUMENT_ROOT}/domain%{REQUEST_URI} -f
RewriteRule .* domain/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* domain/index.php?q=$0 [QSA]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://domain.com.au/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://domain.com.au$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com.au/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com.au$      [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.domain.com.au [R,NC]

【问题讨论】:

  • 请发布您当前的重写规则。
  • 请不要在此处的问题中添加“紧急”和“在线等待”。志愿者倾向于在闲暇时回答问题:),无论如何,如果这里的问题是为未来的观众编写的,那么这里的问题是最好的——对于他们来说,OP 的紧迫性不是有用的信息。

标签: php apache .htaccess mod-rewrite drupal-7


【解决方案1】:

在您的网络服务器的根目录中打开名为.htaccess 的文件并添加以下代码行:

RewriteEngine On

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

RewriteCond %{SERVER_PORT} 80
RewriteRule ^checkout/(.*)$ https://www.yourdomain.com/checkout/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_URI} !^/checkout/
RewriteRule ^(.*)$ /subfolder/$1 [NE,L,QSA]

重写你的完整的.htaccess-file(检查这是否有效,然后我将删除之前的代码):

RewriteRule ^$ subfolder/index.php [QSA,L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.yourdomain.com [NC]

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

RewriteCond %{SERVER_PORT} 80
RewriteRule ^checkout/(.*)$ https://www.yourdomain.com/checkout/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^subfolder/(.*) /subfolder/index.php?q=$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_URI} !^/checkout/
RewriteRule ^(.*)$ /subfolder/$1 [NE,L,QSA]

【讨论】:

  • 感谢您的推广回复戴夫!但它似乎不起作用,我尝试在浏览器中输入 www.domain.com,得到“内部服务器错误”,有什么想法吗?
  • 有一个错字(1个空格太多),更正了!现在工作吗?
  • 再次感谢您的帮助,Dave,刚刚再次尝试,主页正在运行,但所有其他页面都加载了“未找到”错误。
  • 仍然无法正常工作..不知道为什么..关于drupal 7的设置有什么问题吗?基本上,除了 $base_url; 之外,我没有更改该文件中的任何内容;
  • 您能否在您提供的 htaccess 内容中澄清一下,“domain”是域的名称,还是子文件夹的名称?或者您想使用与您的域名相同的子文件夹名称?当您将我的代码放在现有代码前面时,它是否有效?或者当您评论 (#) 前 3 行现有行时它是否有效(不考虑 RewriteEngine 行)
猜你喜欢
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
  • 2012-01-11
  • 2020-01-22
  • 2011-09-08
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多