【发布时间】:2011-06-06 08:30:52
【问题描述】:
编辑:
Ubuntu 系统上默认安装的 Apache2 似乎已完全锁定。这也会影响.htaccess 文件,因为它们不允许覆盖默认配置中的任何内容。
但是,编辑 /etc/apache2/sites-available/default 文件确实授予了我的 .htaccess 文件足够的权限来执行我想做的事情:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
# Modify this from "None" to "All" (or any other suitable value)
--> AllowOverride None
Order allow,deny
allow from all
</Directory>
...
编辑:
这是我的 .htaccess 现在的样子:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)$ $1-$2.php
原产地:
我找到了几个关于此的操作方法,但我无法正确理解(是的,我可悲地愚蠢)。
我想翻译一下:
http://www.mydomain.com/flat/link?a=b&c=d
到这里:
http://www.mydomain.com/flat-link.php?a=b&c=d
到目前为止,我只收到一个愚蠢的 404 抱怨 The requested URL /flat/link was not found on this server.
值得一提的是404其实是对的; www-root 中没有像/flat/link 这样的文件结构,因此我会将虚构的路径转换为实际路径(因为flat-link.php 文件存在)。有人告诉我,这不一定是最漂亮的架构,但它是一个有效的场景,因为我不希望我的文件结构与我的 REST-api 匹配。
【问题讨论】:
-
你把
.htaccess文件放到webroot了吗? -
@Lekensteyn:是的,我已经验证直接访问“真实路径”(即
http://www.mydomain.com/flat-link?a=b&c=d)会给出预期的响应。但是,访问虚构路径 (http://www.mydomain.com/flat/link?a=b&c=d) 会向我抛出404:-(