我以前工作的HTAccess不再有效

时间:2012-08-10 02:24:25

标签: regex apache .htaccess

我的HTAccess之前正在工作。但我想在网站上添加一个FTP部分。决定所有FTP都将进入/ftp,所有对/ftp/...的请求都将在内部重定向到/ftp.php?dir=...处理身份验证之类的问题,然后再使用readfile(...)。作为正则表达式的n00b,我认为这样可行:(仅添加了ftp部分并添加了|ftp

RewriteEngine On

# http://httpd.apache.org/docs/2.4/rewrite/flags.html

# Match page
RewriteCond %{REQUEST_URI} !^/?(cydia|firmware|scripts|site|ftp)
RewriteCond %{REQUEST_URI} !^/?(robots.txt|ftp.php)
  RewriteRule ^/?(.*)$ /site/index.php?title=$1 [PT,L,QSA]

# Match FTP
RewriteCond %{REQUEST_URI} ^/?ftp
  RewriteRule ^/?(.*)$ /ftp.php?dir=$1 [PT,L,QSA]

RewriteRule ^/*$ /site/index.php [L,QSA]

基本上,我所做的是(我认为)匹配/ftp为真,而不是如上所述。但是,这会在整个站点中给出500 Server Error(表示HTAccess中存在问题)。我确定这是一个简单的错误,但我希望你能帮助我。

1 个答案:

答案 0 :(得分:1)

你的问题是那些太行将重定向以ftp开头的所有内容(包括ftp.php,这将创建一个无限循环)

RewriteCond %{REQUEST_URI} ^/?ftp
RewriteRule ^?(.*)$ /ftp.php?dir=$1 [PT,L,QSA]

尝试用它替换它们:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/?ftp
RewriteRule ^/?(.*)$ /ftp.php?dir=$1 [PT,L,QSA]
相关问题