除非目录存在,否则htaccess的正则表达式匹配模式

时间:2012-04-18 23:35:31

标签: regex .htaccess redirect

我在htaccess文件中使用正则表达式来捕获/ [用户名]并将其重定向到用户名页面,例如,mywebsite.com / john将转发到mywebsite.com/username?u=john。这有效,但我现在想要排除与存在的目录相匹配的任何内容。因此,如果有人访问mywebsite.com/sign-up,则重定向将其排除,因为该目录(/ sign-up)存在。这是可能的,这是正常的做法吗?谢谢。

编辑:理想情况下,我不想手动排除每个现有目录。我希望它对所有现有目录都是自动的。

1 个答案:

答案 0 :(得分:0)

在它之前使用重写条件。 !-f表示不是现有文件,! - d表示不是现有目录。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)$ username?u=$1 [L]