如果url不存在htaccess重写

时间:2013-09-14 22:33:25

标签: .htaccess url mod-rewrite indexing query-string

我是htaccess的新手..

我有这样的条件..

如果用户访问

first/second/third

等于

first.api.php?rquest=second&attr=third

但是如果rquest的值是'index',它将从URL中删除,如

first/third

等于

first.api.php?rquest=index&attr=third

first/index/third

我整夜都在寻找解决方案,但没有结果。 我知道如果请求是索引但是attr有一个值,系统会混淆,它会将attr视为rquest。见上文,第一/第三,系统将把“第三”段视为rquest。

是否可以像这样重写网址?

这是我整晚的工作,我知道这仍然是废话..

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s
RewriteCond %{QUERY_STRING} !rquest=index
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ $1.api.php?rquest=$2&attr=$3 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/(.*)$ $1.api.php?rquest=$2 [QSA]

RewriteCond %{REQUEST_FILENAME} -s
RewriteCond %{QUERY_STRING} rquest=index
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ $1.api.php?rquest=index&attr=$2 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)$ $1.api.php?rquest=index [QSA,L]

</IfModule>

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ /$1.api.php?rquest=$2&attr=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ /$1.api.php?rquest=index&attr=$2 [L,QSA]

不清楚您使用旧的重写规则尝试实现的目标,但上述内容应该按照您的描述进行。