如何使用.htaccess删除部分URl?

时间:2011-10-10 08:48:32

标签: apache .htaccess mod-rewrite

目前我的网站上有20多个网址

http://www.example.net/content/index/mission

我想从所有网址中删除/ content / index,所以它们看起来应该是这样的

http://www.example.net/mission

换句话说,我总是从网址中删除/ content / index。 我确信它非常直接,但我对Apache不是很有经验。

5 个答案:

答案 0 :(得分:12)

您需要Apache的重写模块:mod_rewrite

然后做这样的事情:

RewriteEngine on 
RewriteRule ^content/index/(.*)$ $1

以下是mod_rewrite的官方文档:click

答案 1 :(得分:1)

我猜你已经为http://www.example.net/content/index/mission

这样的网址制定了一些重写规则

您需要找到这些规则并添加一个使用类似结构的新规则,但是“硬编码”内容/索引部分,例如,假设现有规则是

RewriteRule ^content/(.*)/(.*)$ /content.php?param1=$1&param2=$2 [L,qsa]

你想制定一个新的规则来获取/任务并以类似的方式重写它,但现有规则开始之前,例如。

RewriteRule ^mission$ /content.php?param1=index&param2=mission [L,qsa]
RewriteRule ^content/(.*)/(.*)$ /content.php?param1=$1&param2=$2 [L,qsa]

这些只是示例 - 它实际上取决于您现有的规则。

答案 2 :(得分:0)

  # Get rid of index.php
  RewriteCond %{REQUEST_URI} /index\.php
  RewriteRule (.*) index.php?rewrite=2 [L,QSA]

  # Rewrite all directory-looking urls
  RewriteCond %{REQUEST_URI} /$
  RewriteRule (.*) index.php?rewrite=1 [L,QSA]

或者只是添加index.html,具体取决于您要删除的扩展名,并且Apache上需要MOD_REWRITE才能使其正常工作。谢谢。

答案 3 :(得分:0)

我还有一个我写的脚本,你把它放在你的服务器上,然后通过互联网浏览器浏览它,它可以确认你的服务器上是否有mod_rewrite。只要启用了mod_rewrite,我向你展示的方式就可以100%工作

答案 4 :(得分:0)

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/removedstring/
RewriteRule ^removedstring/(.*)$ https://www.domain.eu/$1 [L,NC,R=301]