在.htaccess中需要一些重定向帮助

时间:2017-04-17 11:04:53

标签: apache .htaccess redirect mod-rewrite

我的问题是,非HTTPS请求和使用WWW的请求都重定向到Main_Page,当请求的URL是根域时,这是正常的,但如果请求是文章,特殊页面等则不行。

示例1: http:// example.com/wiki/Articlename重定向到https:// example.com/wiki/Main_Page,但我想重定向到https://示例。 COM /维基/ ArticleName的

示例2: https:// www.example.com/wiki/Articlename重定向到https:// example.com/wiki/Main_Page,但我想重定向到https:// example.com/wiki/Articlename

这是我在.htaccess中的设置:

<IfModule rewrite_module>
RewriteEngine On
RewriteBase /
Options +FollowSymlinks

# Force HTTP to HTTPS/SSL
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

# Redirect Example.com to Example.com/wiki/Main_Page
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /wiki/$1 [PT,L]

# Short url for wiki pages
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [PT,L]

# Permanent redirect www url to non-www
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule (.*) http://example.com/$1 [L,R=301]
</IfModule>    

在共享主机上使用MediaWiki(Debian 8 Jessie,Apache,PHP 5.6),因此httpd.conf不是一个选项。 Example.com仅提供MediaWiki,这就是将域重定向到https:// example.com/wiki/Main_Page(默认)的原因。

知道我做错了吗?

编辑:HTTPS重写现在正在移动&#34;#强制HTTP到HTTPS / SSL&#34;在.htaccess的顶部,但WWW重写仍然无法正常工作。代码已更新。

1 个答案:

答案 0 :(得分:0)

我认为你的问题在于你在RewriteRule之后使用'L' - http://httpd.apache.org/docs/current/rewrite/flags.html#flag_l

它会导致规则处理停止,而您的逻辑似乎需要执行几个规则