【问题标题】:rewrite url using mod_rewrite and remove sub directories使用 mod_rewrite 重写 url 并删除子目录
【发布时间】:2014-04-30 10:06:48
【问题描述】:

我目前正在建立一个网站,但它还没有上线,我正在使用 wamp server 2.4。我需要删除子目录以免泄露我的目录结构,我有一个包含以下文件夹的测试站点:includessub

要访问的链接在 sub 中,因此如果用户单击指向 sub/link.php 的链接,则 URL 将显示 localhost/sub/link.php..我希望它显示 localhost/test/link/没有子显示。到目前为止,我已经在 Apache 中搜索了 mod_rewrite,了解了它,但仍然无法删除子目录。我所做的只是删除文件扩展名(.php)。

我在 Stack Overflow 上搜索过,但答案没有帮助,可能是因为他们使用在线托管网站。 link.php 没有变量,它是一个简单的 php 文件,可以回显内容,但不使用任何 GET/POST 变量。

这是html代码,我故意在'http'中写了一个't'..虽然在代码中是两个..

链接

RewriteEngine On
RewriteRule ^sub/(.*)$ /$1 [L,R=301]

看看这个网站,它托管在 wordpress 上,您访问的每个链接都显示为没有任何子目录,它只是在 url 后面有一个斜杠,是否可以在 apache 上实现?

http://www.afdar.com

【问题讨论】:

标签: php apache .htaccess mod-rewrite


【解决方案1】:

在你的.htaccess试试这个

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/test/sub/
RewriteRule ^test/(.*)$ /test/sub/$1 [QSA,L]

它将重写 URL:

http://localhost/test/sub/link.phphttp://localhost/test/link.php

http://localhost/test/sub/another.phphttp://localhost/test/another.php

【讨论】:

  • 它不起作用,它仍然显示完整的 URL,我在这里做错了吗?我尝试先将其保存在根目录中,然后再保存在子文件夹目录中,但均无效。 :(
  • 我想你误解了这个问题,'test' 是根目录,所以它应该从 localhost/test/sub/link.php 更改为 localhost/test/link.php
  • 不,仍然无法正常工作。我也在 url 栏中输入了它,它说 404 Not Found。我想重写url..html代码是'localhost/test/sub/link.php">Link</a>'
  • 但是不,它仍然没有删除子目录
  • 嗨,@Betty,您可以尝试更新答案。我已经在我的机器上测试了它的工作原理:)
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2018-11-08
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多