.htaccess RewriteRule阻止目录访问

时间:2012-08-27 22:13:58

标签: .htaccess mod-rewrite redirect http-redirect

当我添加“虚荣URL”功能时,我必须修改我的.htaccess文件,该功能允许我的网站成员以myWebsite / membersName的形式输入网址并转发到他们的主页,直到添加虚荣URL功能一直是myWebsite / member-profile.php?member_id = 123456

的形式

一切正常,但如果URL指向myWebsite / someDirectory等目录,我会被重定向到我的.htaccess文件中指定的错误页面。

我是一名PHP程序员,但我不太熟悉RewriteRules或他们的条件。下面我从Linux服务器的根目录粘贴了我的整个.htaccess文件。有人可以帮我弄清楚问题是什么吗?

SuPHP_ConfigPath /home/helcupor/public_html
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

#for files, append .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

#for vanity urls redirect to url2id.php
RewriteCond %{REQUEST_FILENAME} >""
RewriteRule ^([^\.]+)$ url2id.php?vanityName=$1 [L]

AuthUserFile "/home/helcupor/.htpasswds/public_html/passwd"

ErrorDocument 404 /routing.php
#AuthName "/admin/"

1 个答案:

答案 0 :(得分:0)

尝试在#for vanity urls

下更改此条件
RewriteCond %{REQUEST_FILENAME} >""

为:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

您希望确保潜在的成员名称不是现有资源(目录或文件)。否则,只需提供资源。不确定你想要与你所拥有的条件进行比较。 %{REQUEST_FILENAME} var仍然是成员名称。