如何使用 htaccess 从 url 中删除文件夹名称

Posted

技术标签:

【中文标题】如何使用 htaccess 从 url 中删除文件夹名称【英文标题】:how to remove folder name from url using htaccess 【发布时间】:2013-09-29 03:56:44 【问题描述】:

我想更改网址:

http://example.com/Portfolios/iPhone/app

收件人:

http://example.com/iPhone/app

所有网址都一样:

example.com/Portfolios/iPad/app

收件人:

example.com/iPad/app

来自:

example.com/Portfolios/xyz/app

收件人:

example.com/xyz/app

我尝试了很多,但没有什么对我有用。


<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^Portfolios(/.*|)$ $1 [L,NC]  
</IfModule>

【问题讨论】:

知道重定向可以被浏览器缓存可能会有所帮助,我只是在几个小时后才学会的; ***.com/questions/4499541/… 【参考方案1】:

启用mod_rewrite.htaccesshttpd.conf,然后将此代码放入您的.htaccess DOCUMENT_ROOT 目录下

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

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

说明: 上面的规则匹配以Portfolios 开头并具有/Portfolios/xyz/app 之类的内容并将xyz/app 放入$1 的URL 模式。它将外部重定向到/$1,即/xyz/app

这些是使用的标志:

L  - Last
NC - Ignore (No) Case comparison
R  - External redirection (with 302) -- can be changed to R=301

【讨论】:

当我尝试 RewriteRule ^Portfolios(/.*|)$ $1 [L,NC] 没有效果,当我尝试 RewriteRule ^Portfolios(/.*|)$ $1 [L,NC ,R=301] 其重定向文件夹结构为 C:/wamp/www/project... @anytime: 我相信Portfolios 是 DOCUMENT_ROOT 正下方的文件夹,对吗? @anubhava 是的,伙计,谢谢你的帮助 :),我想同时启用以下网址:domain.com/Portfolios 和 domain.com/iPhone/app(从 domain.com/Portfolios/iPhone/app 重定向) @anytime: 你能试试这个规则吗:RewriteRule ^Portfolios/(.*)$ /$1 [L,NC,R] 告诉我。 @anubhava,好的。现在http://kristinita.github.io/Portfolios/app.html 成功为我打开,但http://kristinita.github.io/bar/app.html — 404 错误。但问题的作者却提出了相反的问题——http://kristinita.github.io/bar/app.html 文件是打开的。怎么做?谢谢。【参考方案2】:

您还可以将根目录设置为 /var/www/Portfolios 而不是 /etc/apache2/sites-enabled 中的 /var/www/,方法是将 DocumentRoot 行编写为

DocumentRoot /var/www/Portfolios

而不是 文档根目录 /var/www/ 还有这条线 改为

【讨论】:

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

使用htaccess从URL中删除公用文件夹

如何使用本地主机的 .htaccess 从 URL 中删除目录名称

从 url (codeigniter) 中删除 index.php 时 .htaccess 防止显示文件

在 Apache 服务器上获取 .htaccess 文件? (从 url 中删除 html)

从.htaccess中的URL中删除文件扩展名

使用 htaccess 从 URL 中删除 .php