重写规则Apache指令在.htaccess不工作(RewriteRule Apache Direc

2019-10-20 10:46发布

我对我的PHP应用程序的WordPress .htaccess文件是在clone-directory/php/我可以说,它是由OpenShift服务器识别。 但是一些的RewriteRules和的RewriteCond似乎并没有工作。 由于应用程序是通过抓取通过HTTP和HTTPS访问,我试图创建SSL和HTTP连接单独的robots.txt。

我已经研究了几个小时与几个不同的代码,但他们没有工作。 是他们中的一些如下...

1

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^robots.txt$ robots-https.txt [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

2

<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymlinks 
RewriteCond %{SERVER_PORT} ^443$ 
RewriteRule ^robots.txt$ robots-https.txt [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

3

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^robots.txt$ robots-https.txt [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

4

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^robots.txt$ robots-https.txt [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteRule ^robots.txt$ robots-https.txt [L]

当我访问https://reversiblean-reversiblean.rhcloud.com/robots.txt ,该网址不会重定向。 网址是永远不变的。

Answer 1:

保持这样的:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} on [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} https [OR]
RewriteCond %{SERVER_PORT} =443
RewriteRule ^robots\.txt$ /robots-https.txt [L,R,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


Answer 2:

确保的robots.txt和第二的robots.txt在回购的PHP目录中。 Unlesss OpenShift将它指向一个默认的robots.txt,但我不知道哪里该文件的存储位置。 我期待的URL改变,但只有robots.txt的内容会根据HTTP协议而改变。

我简直不敢相信我已经花了我一天的近一半这一点。 :)

如果任何人遇到了麻烦或想知道谷歌的重复内容的问题,这是我的.htaccess现在看起来如何?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule ^robots.txt$ robots-ssl.txt [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>


文章来源: RewriteRule Apache Directives in .htaccess not working