.htaccess - htaccess 文件中的多个重写规则和条件

标签 .htaccess http mod-rewrite https

在我的 .htaccess 文件中我已经有一些重写条件和规则,并且它工作正常。

现在我需要将“http 到 https 重定向”添加到我的 htaccess 文件中。

这是我的旧 .htaccess 文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L]

RewriteRule ^([a-z0-9_-]+)$   pages/$1.php [L]
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)$   pages/$1/$2.php [L]
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$   pages/$1/$2/$3.php [L]

我试图将以下代码添加到文件中,但它无法正常工作。 例如,如果我将 url 直接写入浏览器,它的工作(仅适用于 www)。但是,如果单击我的任何反向链接或谷歌搜索结果链接,它就不起作用。

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

我哪里错了?我应该把代码放在哪里?任何帮助都会很棒。谢谢。

最佳答案

您的 htaccess 可能如下所示:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L]

RewriteRule ^([a-z0-9_-]+)$ pages/$1.php [L]
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)$   pages/$1/$2.php [L]
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$   pages/$1/$2/$3.php [L]

至少,它在我自己的实现中对我有用

关于.htaccess - htaccess 文件中的多个重写规则和条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744603/

相关文章:

java - Angular JS , Tomcat Apache , # Urls

objective-c - 使用 objective-c 创建 HTTP POST 消息并处理返回的 XML 数据

java - 以 UTF-8 格式发布 Java/Android 中的文本和文件

php - 页面未找到或重定向?

apache - 如何避免在 url 上输入 .php?

.htaccess 重定向 - 更新站点(301 合适?)

php - Wordpress 重定向到 xampp 的仪表板,主页除外

.htaccess - htaccess mod_rewrite .tld 到特定文件夹

http - 为什么kafka不用http?

.htaccess - RewriteRule 和数字符号 “#”