【问题标题】:Clean/Short URLs using .htaccess is not working as it should使用 .htaccess 的清理/短 URL 无法正常工作
【发布时间】:2012-11-22 03:30:27
【问题描述】:

我一直在关注一些 YouTube 视频以尝试使其正常工作,但似乎并不想这样做。这就是我的 .htaccess 文件的外观:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule RewriteRule ^(.*)$ index.php/$l

我对 .htaccess 完全陌生,我不完全确定它是如何工作的,但我的常识告诉我只需创建一个文件,将其命名为 .htaccess 并将其放在同一个文件夹中作为我的 index.php 对吧?

所以当我去,说 index.php/foo/bar 甚至只是 /foo/bar/ 我得到一个 404 错误。

可能的问题是什么?这是一个安装了 PHP 5.3.10 的 Windows 2008 Server。

【问题讨论】:

  • .htaccess 通常位于网站的根目录中。
  • 不在根目录下会停止工作吗?
  • 您在最后一行的“RewriteRule”上也加倍了。只需要一次。

标签: html .htaccess url url-rewriting


【解决方案1】:

作为开始你的最后一行应该是

RewriteRule ^(.*)$ index.php/$l

它应该可以按您的预期工作...将现有文件/文件夹以外的所有请求传递到index.php

.htaccess 可以位于请求 URL 命中的任何文件夹中...唯一的区别是 URL 的基数与 .htaccess 所在的文件夹相关

例子:

/folder1
 .htaccess
 index.php
 /folder2
 .htaccess
 index.php

如果您访问/test.php none 如果您的.htaccess 文件将被处理(与请求URI 无关。

如果您访问/folder1/test.php,则将使用folder1 中的相应.htaccess,并且RewriteRule 中的$1 将显示test.php/folder1/ 将从URI 中删除。

如果您访问/folder1/folder2/test.php,则类似... apache 将使用来自folder2.htaccess...来自folder1 的那个将被忽略(有点不直观)

【讨论】:

  • 它没有解决这个问题,但会导致另一个问题,所以谢谢。
  • @F4r-20 什么问题...请更新您的问题,会尽力帮助
  • 我仍然遇到 404 错误,但作为一名技术人员,我知道这可能是一个难以解决的问题,因为您看不到许多因素。我目前正在研究一个解决方案,我会告诉你进展如何。
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多