.htaccess:修改URL

时间:2012-02-03 16:43:21

标签: apache .htaccess mod-rewrite url-rewriting

我将网站的大部分公共内容保存在名为“pages”的文件夹中,在那里我有每个页面的文件夹,然后在每个页面中我都有每种类型内容的文件夹。

编辑:重新编写它以使其更容易理解。

所以我的典型网址是:http://www.example.co.uk/folderName/folderName/folderName/fileName.php

但我希望它显示如下:http://www.example.co.uk/fileName

我还需要使用URL来处理卡在其末尾的PHP变量,如下所示:http://www.example.co.uk/fileName?phpVar=1

我知道这是可能的,因为我看到它到处都是。 :L

2 个答案:

答案 0 :(得分:3)

也许这个?

# Turn mod_rewrite on
RewriteEngine On
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-f
# Rewrite /filename to /pages/filename/pages/filename.php
RewriteRule ^(.+)$ /pages/$1/pages/$1.php [L]

答案 1 :(得分:0)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^fileName1/?$ folderName/folderName/folderName/fileName1.php [L]
RewriteRule ^fileName2/?$ folderName/folderName/folderName/fileName2.php [L]

应该做你想要的。假设您希望用户将http://example.com/about.php视为http://example.com/about

添加RewriteCond %{REQUEST_FILENAME} !-d可能也是必要的,但您的说明并不清楚。


要让您的主页始终在网址中显示“主页”,您需要在索引文件中使用以下内容:

if ($_SERVER['REQUEST_URI'] == '/index.php' or $_SERVER['REQUEST_URI'] == '/') {
  header('Location: http://'.$_SERVER['HTTP_HOST'].'/home');
}

然后将其添加到.htaccess文件中:

RewriteRule ^home$ index.php [L,QSA]