Php 防止拾取文件夹
所以我有一个网站,我正试图实现像Twitter这样的URL。这是我的密码Php 防止拾取文件夹,php,regex,.htaccess,url,Php,Regex,.htaccess,Url,所以我有一个网站,我正试图实现像Twitter这样的URL。这是我的密码 Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?u
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1
问题是我有一些页面,比如/signup
和/forget
,当我访问它们时,它们会被当作用户。因此,我所做的是将我不希望htaccess获取的每个页面放在一个文件夹中,比如signup
,其中包含注册页面的index.php
。但htaccess仍然将其视为用户名。所以我的问题是我如何解决这个问题?我想“阻止”某些链接(文件夹)被算作用户
我知道
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
适用于文件,但有适用于文件夹的吗 试试这个
RewriteRule ^(signup|forgot)($|/) - [L]
-f
已经完成了您想要的操作。问题是您有两个规则条件应用于一个规则。
因此,第二条规则甚至适用于存在的文件夹
这将把规则合并为一个规则
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ profile.php?username=$1
- 如果文件名是现有文件夹或文件,
或-f
条件将失败,规则将不适用。将不会重写现有文件夹,如-d
signup
- 规则中的
使/?
成为可选的,并结合了这两种情况/
可以匹配字母、数字和下划线\w
的糟糕规则-f
无法工作…OP需要一种防止应用文件夹的方法。我认为这是可行的。但是你的回答提供了更多的细节,这很好@zx81