regex - Apache 多重重写规则

标签 regex apache .htaccess mod-rewrite virtualhost

我有两套重写规则。这是虚拟主机:

<VirtualHost *:80>
    ServerName datingjapan.co
    ServerAlias *.datingjapan.co
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}$1 [R=301,L]
    DocumentRoot /var/www/html/datingjapan.co
</VirtualHost>

这是 .htacess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

我一直在尝试将 .htaccess 添加到虚拟主机,以便我可以删除 .htaccess 文件 - 下面是一个示例,但我得到了显示的站点:

<VirtualHost *:80>
    ServerName datingjapan.co
    ServerAlias *.datingjapan.co
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?/$1
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}$1 [R=301,L]
    DocumentRoot /var/www/html/datingjapan.co
</VirtualHost>

我知道 [L] 表示最后一条匹配的规则,因此我已将其删除,但它仍然不起作用。

我在这里缺少什么?我尝试过颠倒规则。

谢谢

最佳答案

仍然需要

L 因为 Last 标志用于标记每个重写规则的结束。规则的排序也很重要。将您的代码更改为:

<VirtualHost *:80>
    ServerName datingjapan.co
    ServerAlias *.datingjapan.co
    DocumentRoot /var/www/html/datingjapan.co

    RewriteEngine on

    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ /index.php?/$1 [L,QSA]
</VirtualHost>

关于regex - Apache 多重重写规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17142971/

相关文章:

ios - .htaccess 中重写文件的 MIME 类型不起作用

apache - 使用.htaccess将特定的URL重定向到另一个URL

Javascript 正则表达式 : Using variables in backreference pattern?

php元素从windows 7到ubuntu 12.04

java - 继承的空指针异常 (Java)

Apache Web 服务器负载平衡

php - 如何获取文档根目录上方一个文件夹的文件?

Apache 保护所有路径,但将特定路径列入白名单

regex - 需要有关 postgresql regexp_replace 的帮助

python - 使用正则表达式从 unicode 字符串中提取数字