为了好玩,我想在 php 中制作一个 reddit 克隆。我主要有 java 经验,但知道我在 php 周围的方式,如果这很重要的话。我对 Rails 3 的经验也非常有限,我相信 rails 处理 URL 的方式也接近我想要的处理方式。
到目前为止,在 .htaccess 中我有:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php/$1 [L]
这会将每个页面路由到 index.php,我在其中解析 URI 并使用开关处理请求。我知道从长远来看这是不可扩展的,但我想开始。
我的下一步是在像 localhost/r/all 这样的 URL 的末尾自动添加一个 / ,这样它就变成了我想要的 localhost/r/all/ 并尝试制作一个 RewriteRule ,例如:
RewriteRule ^/?(.+)$ /$1/ [R]
这给出了 500 错误。我认为这是因为它陷入了无限的重定向循环,因为 /$1/ 将等于 ^/?(.+)。所以我需要类似的东西:
RewriteRule ^/?(.+)Does not end in a forwardlash$ /$1/ [R]
我怎样才能做到这一点?我看到了!charecter 可用于表示它不应该匹配的条件,但我无法让它工作。
任何建议表示赞赏。
编辑:
getenv("DOCUMENT_ROOT") //gives /var/www
我有 /var/www/index.php 生活在 /www 中。我正在对其进行这些更改的 .htaccess 文件位于 /var 中。
我在 /var 中有 .htaccess 因为在我的 httpd.cong 我有这个:
<Directory /var>
AllowOverride All
</Directory>
我首先尝试将其作为
<Directory /var/www>
并将 .htaccess 放在 www 中,但它永远不会被读取。我知道它没有被读取,因为我在里面放了垃圾并且没有错误。但是,如果我在 /var 中时有垃圾,并且 Dectory 指令指定 /var,我会收到错误消息。