首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.htaccess中的RewriteRule Apache指令不起作用

.htaccess中的RewriteRule Apache指令不起作用
EN

Stack Overflow用户
提问于 2014-07-13 23:55:46
回答 2查看 392关注 0票数 0

我的PHP wordpress应用程序的.htaccess文件是用clone-directory/php/编写的,我可以说OpenShift服务器已经识别了它。但一些RewriteRules和RewriteCond似乎不起作用。由于爬虫可以通过http和https访问该应用程序,因此我尝试为ssl和http连接创建单独的robots.txt。

我已经用几个不同的代码研究了几个小时,但都不起作用。其中一些如下所示:

1

代码语言:javascript
运行
复制
<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

代码语言:javascript
运行
复制
<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.

代码语言:javascript
运行
复制
<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.

代码语言:javascript
运行
复制
<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>

5

代码语言:javascript
运行
复制
<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时,url不会重定向。URL始终是相同的。

EN

回答 2

Stack Overflow用户

发布于 2014-07-14 00:12:30

保持如下所示:

代码语言:javascript
运行
复制
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]
票数 0
EN

Stack Overflow用户

发布于 2014-07-14 00:49:09

确保robots.txt和第二个robots.txt存在于存储库的php目录中。Unlesss OpenShift会将其指向一个默认的robots.txt,尽管我不确定该文件存储在哪里。我原以为url会改变,但只有robots.txt的内容会根据http协议改变。

我不敢相信我花了大半天的时间在这上面。:)

如果其他人有问题或者想知道谷歌的重复内容问题,这是我的.htaccess现在的样子……

代码语言:javascript
运行
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24724527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档