将url的结构更改为类似目录的结构

时间:2013-09-01 00:49:04

标签: .htaccess mod-rewrite url-rewriting

我知道这个问题已被多次询问和回答,但我对.htaccess,regualr表达式,mod重写等的经历通常会让我发疯。

我在大多数网站上看到网址的结构是类似目录的结构wwww.linku.biz/edit我的最终问题是你是如何做到这一点的?

幕后所有这些网站都有正常的网址变量,但只是重写了吗?,例如www.linku.biz/myprofile?edit="whatever" ,这一切都是用.htaccess和mod_rewrites完成的吗? /强>

  • 我想输入我的网址www.linku.biz/search,但实际上是www.linku.biz/search.php

  • 我想输入我的网址www.linku.biz/JackTrow,但实际上是www.linku.biz/profile.php?us="JackTrow

  • 此外,当我有大量网址数据时,我希望重新编写数据,例如www.linku.biz/search?a=1&b=2&c=3实际上有www.linku.biz/search.php?a=1&b=2&c=3

2 个答案:

答案 0 :(得分:1)

通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+search\.php\[?^\s] [NC]
RewriteRule ^ search? [R=301,L]

RewriteRule ^search/?$ search.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ profile.php?us=$1 [QSA,L]

请注意您的要求1& 3将由规则#1

涵盖

答案 1 :(得分:0)

将此规则添加到根文件夹中的.htaccess文件中:

要执行此操作www.linku.biz/JackTrow <--- www.linku.biz/profile.php?us="JackTrow

 RewriteRule ^profile.php?us=(.*)$ /$1 [R=301,L]

要执行此操作:www.linku.biz/search however <--- www.linku.biz/search.php

 RewriteRule ^(.*).php$ /$1 [R=301,L]

你的最后一个,我还不明白你想要的是什么。