我正在使用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错误(内部服务器错误)。
任何人都可以帮助我吗?非常感谢!
答案 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]