HTACCESS没有挑选路径

时间:2016-06-10 16:34:33

标签: php .htaccess mod-rewrite

我在我的网站上使用HTACCESS但是我遇到了一个文件/链接的小问题。

我的链接是http://localhost/photos/view/1465574353

我的HTACCESS是:

Options -MultiViews

DirectoryIndex index.php

RewriteEngine On

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

RewriteRule ^([\w-]+)/?$                index.php?category=$1 [NC,L,QSA]
RewriteRule ^([\w-]+)/([0-9]+)/?$       index.php?category=$1&currentpage=$2 [NC,L,QSA]
RewriteRule ^view/([0-9]+)/?$           view.php?id=$1 [NC,L,QSA]

当我关注该链接时,我根本没有重定向到任何地方,但是当我关注http://localhost/photos/view.php?id=1465574353时,我会看到该页面。

任何人都知道这可能是什么原因?

**如果我将其更改为

RewriteRule ^view/([0-9]+)/([\w-]+)/?$          view.php?id=$1&title=$2 [NC,L,QSA]` and visit my page at `localhost/photos/view/1465574353/title

我看到了正确的页面!

仅供参考:我在其他部分使用相同的格式,如下所示:

Options -MultiViews

DirectoryIndex index.php

RewriteEngine On

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

RewriteRule ^([\w-]+)/?$                    index.php?section=$1 [NC,L,QSA]
RewriteRule ^([\w-]+)/([0-9]+)/?$           index.php?section=$1&currentpage=$2 [NC,L,QSA]
RewriteRule ^read/([0-9]+)/([\w-]+)/?$      read.php?id=$1&title=$2 [NC,L,QSA]

1 个答案:

答案 0 :(得分:0)

http://localhost/photos/view/1465574353已与

匹配
RewriteRule ^([\w-]+)/([0-9]+)/?$ index.php?category=$1&currentpage=$2 [NC,L,QSA]
  • 查看 - ([\w-]+)
  • 1465574353 - ([0-9]+)

因此不会被最终的RewriteRule处理。

如果您希望它由更具体的(view)规则处理,则必须交换最后两个规则,因为规则是按顺序尝试的。

RewriteRule ^view/([0-9]+)/?$ view.php?id=$1 [NC,L,QSA]
RewriteRule ^([\w-]+)/([0-9]+)/?$ index.php?category=$1&currentpage=$2 [NC,L,QSA]