我正在尝试使用 htaccess 重写对我的域的子文件夹中的 main.php 的所有请求。我的 .htaccess 中的代码如下:
RewriteEngine on
RewriteBase /public
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . main.php [L]
我确定该模块已启用,我已使用
apache2ctl -M
命令进行检查
root@vps847:/etc/apache2/sites-available# apache2ctl -M
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
ssl_module (shared)
status_module (shared)
Syntax OK
在我的默认站点中,我添加/编辑了以下行:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /var/www/public>
AllowOverride All
</Directory>
我每次编辑完一些内容后都会重新启动apache。然而,每次我浏览公共目录时,我都会看到 apache 目录列表。我已经尝试将 .htaccess 添加到我的 apache 的根目录,但它也不起作用。当我向 .htaccess 文件添加错误时,我确实收到了内部服务器错误。
有人能发现我的配置有什么问题吗?我使用的是 Ubuntu 服务器 12.04。
把这个放在里面
/public/.htaccess
:
DirectoryIndex main.php
RewriteEngine on
RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . main.php [L]
我遇到了这个问题,发现有效的解决方案是:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /tools/admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /tools/admin/index.php [L]
希望这对某人有帮助
我终于设法修复它,并且此组合正在与子文件夹中的“.htaccess”文件一起使用:
Options +FollowSymLinks -MultiViews
DirectoryIndex FormEntries.php
RewriteEngine On
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([a-zA-Z0-9_-]+)/?([0-9]+)?$ /api/$1.php?id=$2 [NC,QSA,L]
所以现在
/api/FormEntries/1
转到 /api/FormEntries.php?id=1
以更用户友好的方式成功显示 API 的输出。