从url中删除目录名称

时间:2016-05-17 08:11:43

标签: php apache .htaccess mod-rewrite

因为我的所有文件都是php,所以我用这个.htacess文件删除了php扩展名:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

所以我有这个网址:

http://example.com/live/kanal/some-title-1
http://example.com/live/kanal/some-title-2
http://example.com/live/kanal/some-title-13
http://example.com/live/kanal/some-title-45
http://example.com/live/kanal/2some-title-333
等等......

我想隐藏kanal / from url,以获取这样的网址:

http://example.com/live/some-title-1
http://example.com/live/some-title-2
http://example.com/live/some-title-13
http://example.com/live/some-title-45
http://example.com/live/2some-title-333

如何使用mod_rewrite实现此目的?

我使用在线生成器来执行重写规则,但没有人可以从URL中删除一段文本。我也在这个论坛上搜索过,我发现了一些关于mod重写目录的帖子,但是在我的.htacess代码中粘贴时遇到了问题。

1 个答案:

答案 0 :(得分:2)

您可以在 /live/.htaccess

中使用此代码
RewriteEngine On
RewriteBase /live/

RewriteRule ^(?!kanal/)(.*)$ kanal/$1 [L,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

确保kanal/子目录中没有.htaccess。