Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 需要有关.htaccess中重定向的帮助吗_Apache_.htaccess_Redirect_Mod Rewrite - Fatal编程技术网

Apache 需要有关.htaccess中重定向的帮助吗

Apache 需要有关.htaccess中重定向的帮助吗,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,我的问题是,非HTTPS请求和带有WWW的请求都会重定向到主页,当请求的url是根域时,这很好,但如果请求是文章、特殊页面等,则不会 示例1:http://Example.com/wiki/Articlename重定向到https://Example.com/wiki/Main_页面,但我想重定向到https://Example.com/wiki/Articlename 示例2:https://www.Example.com/wiki/Articlename重定向到https://Example

我的问题是,非HTTPS请求和带有WWW的请求都会重定向到主页,当请求的url是根域时,这很好,但如果请求是文章、特殊页面等,则不会

示例1:http://Example.com/wiki/Articlename重定向到https://Example.com/wiki/Main_页面,但我想重定向到https://Example.com/wiki/Articlename

示例2:https://www.Example.com/wiki/Articlename重定向到https://Example.com/wiki/Main\u页面,但我想重定向到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>    

重新启动发动机
重写基/
选项+FollowSymlinks
#强制HTTP到HTTPS/SSL
重写cond%{SERVER_PORT}80
重写规则^(.*)$https://example.com/$1[R,L]
#将Example.com重定向到Example.com/wiki/Main_页面
重写cond%{HTTP_HOST}example\.com[NC]
重写cond%{REQUEST_URI}^/$
重写规则^(.*)$/wiki/$1[PT,L]
#wiki页面的短url
重写规则^/?wiki(/.*)$%{DOCUMENT_ROOT}/w/index.php[PT,L]
#将www url永久重定向到非www
RewriteCond%{HTTP_HOST}^www\.example\.com$[NC]
重写规则(.*)http://example.com/$1[L,R=301]
在共享主机(Debian 8 Jessie、Apache、PHP5.6)上使用MediaWiki,因此httpd.conf不是一个选项。Example.com仅为MediaWiki服务,因此域被重定向到https://Example.com/wiki/Main_页面(默认)

知道我做错了什么吗


编辑:在将“#强制HTTP到HTTPS/SSL”移动到.htaccess的顶部后,HTTPS重写现在可以工作,但WWW重写仍然无法工作。代码已更新。

我认为您的问题在于重写规则后使用“L”——


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

我认为您的问题在于重写规则后使用“L”——

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