正在.htaccess上覆盖的规则

正在.htaccess上覆盖的规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试使用.htaccess创建一些规则: 我想: blog/[特定页面标题]:应该是src/components/blog/index.php的掩码 [类别]/[特定模块url]:应该是/index.php [特定模块url]:应该是/index.php .htaccess文件内容为: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # RULES FOR

我正在尝试使用
.htaccess
创建一些规则:

我想:

  • blog/
    [特定页面标题]:应该是
    src/components/blog/index.php的掩码
  • [类别]/[特定模块url]:应该是
    /index.php
  • [特定模块url]:应该是
    /index.php
.htaccess
文件内容为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# RULES FOR BLOG

RewriteRule blog/(.+)$                      ./src/components/blog/index.php?url=$1 [L,QSA,NC]

# RULES FOR LANDING PAGE

RewriteRule ([a-z\-_0-9]+)/([^/.]+)$        index.php?module=$1&url=$2 [QSA,NC]
RewriteRule ([^/.]+)$                       index.php?url=$1 [QSA,NC]

问题是

它总是重定向到
/index.php
——我无法访问博客


如何使规则不被覆盖?

您缺少规则上的
^
起始锚点,因此它们与不应该匹配的URL匹配:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# RULES FOR BLOG

RewriteRule ^blog/(.+)$                      ./src/components/blog/index.php?url=$1 [L,QSA,NC]

# RULES FOR LANDING PAGE

RewriteRule ^([a-z\-_0-9]+)/([^/.]+)$        index.php?module=$1&url=$2 [QSA,NC]
RewriteRule ^([^/.]+)$                       index.php?url=$1 [QSA,NC]