1

我已经阅读了一些 .htaccess 教程,但无法弄清楚这个简单的任务。我有一个通常将每个请求路由到 index.php 的站点。但是我有一个特定的文件(upload_photo.php),我希望它简单地执行而不重新路由到 index.php。下面是我的 htacess 文件,其中包含一个 upload_photo.php 条目,它搞砸了一切。我究竟做错了什么?

# AddType x-mapp-php5 .php
# AddHandler x-mapp-php5 .php

RewriteEngine on
Options +FollowSymlinks
#Options +SymLinksIfOwnerMatch

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule upload_photo.php upload_photo.php [L]
RewriteRule . index.php [L]

ErrorDocument 404 /page-unavailable/

<files ~ "\.tpl$">
order deny,allow
allow from none
deny from all
</files>
4

2 回答 2

4
RewriteRule upload_photo\.php - [L]

-意思是“不要重写”,L当此规则匹配时停止处理其他规则。把它放在一般重写规则之前。

在您的情况下,它搞砸了,因为RewriteConds 一次只适用于一个RewriteRule

于 2012-12-06T15:48:30.023 回答
1

你原来的重写:

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

做这样的事情:

配置:

RewriteEngine on
Options +FollowSymlinks

如果请求的路径不是文件

RewriteCond %{REQUEST_FILENAME} !-f

如果请求的路径不是目录

RewriteCond %{REQUEST_FILENAME} !-d

然后重写为 index.php

RewriteRule . index.php [L]

因此,如果您的文件upload_photo.php确实存在于相同的目录中,index.php则无需更改原始重写。正确的文件 .php 将被自动引用,因为只有在请求的资源(文件或目录)不存在时才会执行对 index.php 的重写。

所以不需要添加这个:

RewriteRule upload_photo.php upload_photo.php [L]
于 2012-12-06T15:53:05.803 回答