如果url不包含某些字符串作为子目录

时间:2015-07-15 20:49:09

标签: .htaccess redirect

我正在使用django网站,我需要在htaccess文件中执行一种“if else”语句。

如果此人转到http://itcvertebralcuritiba.com.br/blog,我想重定向到服务器子目录public_html / blog并忽略htaccess文件中的所有其余代码,因为它会安装django并更改路径。

这是当前的htaccess文件:(它安装django的东西)

RewriteEngine On
RewriteBase /
RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]

RewriteCond %{HTTP_HOST} ^itccuritiba\.pre\-hw44\.webservidor\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.itccuritiba\.pre\-hw44\.webservidor\.net$
RewriteRule ^/?$ "itcvertebralcuritiba\.com\.br" [R=301,L]

RewriteCond %{HTTP_HOST} ^itcvertebralcuritiba\.pre\-hw44\.webservidor\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.itcvertebralcuritiba\.pre\-hw44\.webservidor\.net$
RewriteRule ^/?$ "http\:\/\/itcvertebralcuritiba\.com\.br" [R=301,L]

我尝试这样做以重定向: - 以下3行是我尝试过的:

RewriteCond %{HTTP_HOST} ^blog\. [OR]
RewriteCond %{REQUEST_URI} ^/blog [NC]
RewriteRule ^ /blog/index.php [L]

RewriteEngine On
RewriteBase /
RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]

RewriteCond %{HTTP_HOST} ^itccuritiba\.pre\-hw44\.webservidor\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.itccuritiba\.pre\-hw44\.webservidor\.net$
RewriteRule ^/?$ "itcvertebralcuritiba\.com\.br" [R=301,L]

RewriteCond %{HTTP_HOST} ^itcvertebralcuritiba\.pre\-hw44\.webservidor\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.itcvertebralcuritiba\.pre\-hw44\.webservidor\.net$
RewriteRule ^/?$ "http\:\/\/itcvertebralcuritiba\.com\.br" [R=301,L]

但它不起作用,重定向但出现500错误(内部服务器错误)。

任何人都可以帮助我吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,您希望这些规则具有R=301规则优先。您希望重定向在内部重写之前发生。

第二件事是你的规则循环。重写引擎执行所有规则,直到URI停止更改。在您的情况下,即使请求已经 /blog/index.php,您也会继续重写到同一个地方:/blog/index.php。尝试添加一些条件以防止循环。

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^itccuritiba\.pre\-hw44\.webservidor\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.itccuritiba\.pre\-hw44\.webservidor\.net$
RewriteRule ^/?$ "itcvertebralcuritiba\.com\.br" [R=301,L]

RewriteCond %{HTTP_HOST} ^itcvertebralcuritiba\.pre\-hw44\.webservidor\.net$ [OR]
RewriteCond %{HTTP_HOST} ^www\.itcvertebralcuritiba\.pre\-hw44\.webservidor\.net$
RewriteRule ^/?$ "http\:\/\/itcvertebralcuritiba\.com\.br" [R=301,L]

RewriteCond %{REQUEST_URI} !^/blog/index\.php
RewriteCond %{HTTP_HOST} ^blog\. [OR]
RewriteCond %{REQUEST_URI} ^/blog [NC]
RewriteRule ^ /blog/index.php [L]

RewriteRule ^(dispatch\.fcgi/.*)$ - [L]
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.fcgi/$1 [L]