htaccess中是否存在“如果存在”参数?

时间:2017-06-11 08:15:44

标签: .htaccess

我可以有三种类型的网址,应该重写为:

http://example.com/admin      -> http://example.com/admin.php
http://example.com/admin/2    -> http://example.com/admin.php?cat=2
http://example.com/admin/2/2  -> http://example.com/admin.php?cat=2&page=2

此外,.php应该添加到项目中的所有.php文件中。

我现在有这个规则:

RewriteEngine on
RewriteBase /

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

RewriteRule ^admin/(\d+)/(\d+)$ admin.php?cat=$1&page=$2

我不知道如何正常工作。我需要将关于页面参数的第二条规则设置为情境,只有当它存在时,因为否则.htaccess尝试仅重写其中包含页码的整行。

有任何帮助吗?谢谢你的关注。

1 个答案:

答案 0 :(得分:1)

您可以使用:

Options -MultiViews
RewriteEngine on
RewriteBase /

RewriteRule ^admin/(\d+)/?$ admin.php?cat=$1 [L]
RewriteRule ^admin/(\d+)/(\d+)$ admin.php?cat=$1&page=$2 [L]

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