.htaccess干净URL的重写规则

时间:2018-12-31 09:27:38

标签: .htaccess

我想要这样的格式化URL:

https://www.example.com/view.php?id=1

其中:

"id" range: 1-99 (without leading "0" from 1 to 9)
"id": always lowercase, no "Id" or "ID" or "iD"

任何与此格式不同的内容都必须将其重定向到 www.example.com/view.php

错误网址的示例:

https://www.example.com/view.php?iD=1
https://www.example.com/view.php?Id=1
https://www.example.com/view.php?ID=1
https://www.example.com/view.php?id=1aaa
https://www.example.com/view.php?id=av1102
https://www.example.com/view.php?id=07
https://www.example.com/view.php?id=100

到目前为止,我有这个:

   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_URI} ^/view.php$
   RewriteCond %{QUERY_STRING} ^(?!(id=[1-9][0-9]{0,1})$).*$
   RewriteRule .* /view.php? [R=301,L]

但是它不起作用,或者没有重定向,或者我收到了众所周知的“ TOO MANY REDIRECTS”循环。

请帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用此:

RewriteEngine on
RewriteCond %{QUERY_STRING} .+ 
RewriteCond %{QUERY_STRING} !^id=([1-9]{1,2}|[1-9a-zA-Z]+) [NC]
RewriteRule ^.*$ /view.php? [L,R]

请确保在新浏览器中对此进行测试,或者清除浏览器缓存后再进行测试。