【问题标题】:change structure of url to directory-like structure将 url 的结构更改为类似目录的结构
【发布时间】:2013-09-04 10:33:33
【问题描述】:

我知道这个问题已经被问过很多次了,但我在 .htaccess、正则表达式、mod 重写等方面的经验通常让我发疯。

我在大多数网站上看到 url 的结构是类似目录的结构,wwww.linku.biz/edit我的终极问题是你是怎么做到的?

是否所有这些网站在后台都有正常的 URL 变量,只是重写了? 例如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

  • 另外,当我有大量 URL 数据时,我希望数据重写,例如 www.linku.biz/search?a=1&b=2&c=3 实际上是在发送 www.linku.biz/search.php?a=1&b=2&c=3

【问题讨论】:

标签: .htaccess mod-rewrite url-rewriting


【解决方案1】:

通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_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 中

【讨论】:

    【解决方案2】:

    将此规则添加到根文件夹中的 .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]
    

    你的最后一个,我还没明白你到底想要什么。

    【讨论】:

    • 由于 RewriteRule 与 QUERY_STRING 不匹配,因此肯定无法正常工作。
    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多