我正在尝试重写所有 4 个字符的所有 url,但允许将其他 url 重写为它的名称 +.php
domain.com/a4Lv/ to domain.com/file.php?id=a4Lv
domain.com/longerThan4Chars/ to domain.com/longerThan4Chars.php
是否可以根据长度重写?
我正在尝试重写所有 4 个字符的所有 url,但允许将其他 url 重写为它的名称 +.php
domain.com/a4Lv/ to domain.com/file.php?id=a4Lv
domain.com/longerThan4Chars/ to domain.com/longerThan4Chars.php
是否可以根据长度重写?
这应该有效。我更喜欢指定允许哪些字符(第一个选项),但如果您想允许任何内容,请使用第二个
RewriteRule ^([a-zA-Z0-9]{4})(/?)$ /file.php?id=$1 [QSA,L]
RewriteRule ^(.{4})(/?)$ /file.php?id=$1 [QSA,L]
分解:
[a-zA-Z0-9] limits it to letters and numbers
{4} the length of the id
(/?) optional trailing slash
是的,您可以制作正则表达式来处理匹配中的字符数:
# for exactly 4 characters:
RewriteRule ^(.{4})/?$ /file.php?id=$1 [L]
# for more than 4 (need to exclude things ending with php)
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule ^(.{4}[^/]+)/?$ /$1.php [L]