Lia*_*iam 5 regex apache .htaccess mod-rewrite
我目前有一个使用此规则设置的 .htaccess 文件:
RewriteRule ^([a-zA-Z0-9_-]+)$ user\.php?user=$1 [L]
它按预期工作: mysite.com/joe变成mysite.com/user.php?user=joe
如何更改正则表达式以在可能的用户名中包含句点?
例如,我希望 mysite.com/joe.blogs转到mysite.com/user=joe.blogs
目前,这会导致 404 缺失页面错误。
我试过^([a-zA-Z0-9\._-]+)$ user\.php?user=$1 [L]
但是这会产生一个内部错误 500(我认为这是由于一个无限循环:如果没有指定用户,user.php 旨在重定向到主页。)
我对这一切都很陌生(尤其是正则表达式)。谢谢你的帮助!
首先检查请求的 URL 是否不是文件或文件夹。这将防止 URL 的重定向循环,例如/user.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-.]+)$ user.php?user=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)