【问题标题】:URL Rewriting .htaccessURL重写.htaccess
【发布时间】:2014-04-27 19:15:50
【问题描述】:

我在使用 .htaccess 文件时遇到了一些问题。我正在开发一个 REST API 并且我正在重写我的 URL,如果我将 .htaccess 放在我的服务器(localhost)的根目录下一切正常,但我实际上不想把我的 .htaccess 文件放在那里但是我的项目目录。

例如我想输入

http://localhost/myproject/player/id/etc..

不只是

http://localhost/player/id/etc...

问题是如果我使用

http://localhost/myproject/player/id/etc.. 

重定向工作正常,但在我的 controller.php 文件中,我检索到的 Path 变量是 /myproject/player/id。有没有办法从 .htaccess 文件中的 URI 中删除 /myproject/ ,或者更一般地说,是否可以从 REQUEST_URI 变量中删除包含 .htaccess 的文件夹的目录?

【问题讨论】:

  • 你在使用任何框架吗?
  • 不,我正在尝试自己编写代码以了解它是如何工作的
  • 您如何访问控制器中的路径?
  • $url = parse_url($_SERVER["REQUEST_URI"]); $path = trim($url['path'], "/");

标签: php .htaccess mod-rewrite


【解决方案1】:

好的。试试这个——在你的 .htaccess 中写——

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^myproject/(.*)$ /$1 [L,NC,R]

它会从你的 url 中删除 myproject。

【讨论】:

  • 所以这意味着我必须提前知道目录?
  • 不,它只是意味着只要这个目录名出现在 url 中,它就不会显示出来!
  • 好的,谢谢,我刚刚尝试了您的代码并添加了 RewriteRule ^myproject/(.*)$ /controller.php/$1 [L,NC,R] 但这不再重定向到控制器。 php,我做错了什么?
  • 没有。等待!您误解了 .htaccess 的目的,此代码不会重定向到任何地方。实际上,它从 url 中隐藏了您的目录名称,但这并不意味着它不存在,只是没有显示,所以您的问题是从 .htaccess 文件中的 URI 中删除 /myproject/ 的方法,这就是方法。如果还有其他的,那就告诉
  • 抱歉,我怎样才能将 controller.php 添加到 URL 中?
猜你喜欢
  • 2011-08-30
  • 2011-03-19
  • 2022-01-18
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多