我知道这个问题已被多次询问和回答,但我对.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
答案 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]
你的最后一个,我还不明白你想要的是什么。