如何使用 htaccess 重写从 url 中删除此目录/文件夹?

Posted

技术标签:

【中文标题】如何使用 htaccess 重写从 url 中删除此目录/文件夹?【英文标题】:How can I remove this directory/folder from url with htaccess rewrite? 【发布时间】:2013-10-23 17:41:02 【问题描述】:

我的目标是:

domain.com/folder

重写->

domain.com

这将涉及该站点内的所有链接。 我的意思是网站上的链接如下:

domain.com/folder/forum.html
domain.com/folder/community.html

等等

这是我的目标:

domain.com/forum.html
domain.com/community.html

等等

非常重要的是,“文件夹”永远不会在地址栏中的 url 中可见。

我已经尝试了很多代码,但我无法真正解决这个问题。 我最好的尝试是使用以下代码:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %REQUEST_URI !(.*)folder
RewriteRule ^(.*)$ folder/$1 [L]

如果我输入

 domain.com 

我得到了

的内容
 domain.com/folder

显示,什么是正确的(“文件夹”不在显示的 url 中)。但是当我点击网站的某些链接时,例如:domain.com/folder/community.html 然后我可以在 url 中再次看到“文件夹”,但我希望它总是被删除。

这是我的网站:

thewedgiecommunity.x10.mx/wedgiecommunity/

我的目标是删除“wedgiecommunity”(=文件夹) 此链接有效

  thewedgiecommunity.x10.mx/

但是当你点击社区(

 thewedgiecommunity.x10.mx/wedgiecommunity/community.html

) 然后我在 URL 中再次获得“wedgiecommunity”。

如果有人可以帮助我会很棒

【问题讨论】:

【参考方案1】:

当直接通过浏览器访问时,您可以使用此规则从 URL 中“删除”文件夹:

RewriteCond %THE_REQUEST \ /wedgiecommunity/
RewriteRule ^wedgiecommunity/(.*)$ /$1 [L,R=301]

然后您的其他规则将处理其余部分。

【讨论】:

不起作用。这段代码仍然相同。当我转到 thewedgiecommunity.x10.mx/wedgiecommunity/community.html 时,我仍然在 URL 中看到“wedgiecommunity”(=文件夹)。【参考方案2】:

您可以使用此代码:

进入 DOCUMENT_ROOT/wedgiecommunity/.htaccess:

RewriteEngine On

RewriteCond %THE_REQUEST ^[A-Z]3,\s/+wedgiecommunity([^\s]*) [NC]
RewriteRule ^ %1 [R=301,L]

进入 DOCUMENT_ROOT/.htaccess:

RewriteEngine On

RewriteRule !^/?wedgiecommunity wedgiecommunity%REQUEST_URI [L,NC]

【讨论】:

不起作用。这段代码仍然相同。当我转到 thewedgiecommunity.x10.mx/wedgiecommunity/community.html 时,我仍然在 URL.l 中看到“wedgiecommunity”(=文件夹) +1 但我认为您在您的情况下(在%1 捕获组中)捕获了额外的/ @Bardock:第一季度。这是唯一的 .htaccess 还是 wedgiecommunity 中有另一个? Q2。这是这个 .htaccess 中唯一的代码吗?如果您有其他代码,请发布有问题的代码? Q3。上面 .htaccess 的位置是什么? A1:是的,我在 wedgiecommunity 中还有另一个 .htaccess。但是由于字符限制,我不能在这里发布它的所有内容。 A2:是的,我用这段代码完全替换了旧代码。 A3:它在 public_html 文件夹中,如果您认为有帮助,我可以为您提供 FTP 访问权限。 嗯,好吧,它现在到处都删除了 wedgiecommunity。但现在我在网站上收到 404 错误代码......我现在真的很困惑。也许我想要的实际上是不可能的?

以上是关于如何使用 htaccess 重写从 url 中删除此目录/文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时在php中重写URL

.htaccess URL 重写挑战

.htaccess 为子文件夹中的 PHP 页面重写漂亮的 URL?

CodeIgniter htaccess 和 URL 重写问题

htaccess 重写 URL 以仅删除一个 php 文件的 $_GET 查询[重复]

.htaccess 在传递给模板之前重写 PATH_INFO 变量为空;不从 url 中删除 index.php