htaccess整理网址

时间:2014-02-14 13:30:27

标签: php .htaccess

所以我一直试图让我的网址看起来更好,但是我无法让它按照我的意愿工作,所以这里可能有一些很好的灵魂可以帮助我。

我需要帮助

ex:www.domain.com/project/index.php?p=settings&u=123&l=k

看起来像www.domain.com/project/settings

我希望删除index.php以及第一个变量之后的所有内容,在这种情况下,p = settings,还要删除?p =

我现在得到了这个

    RewriteEngine On
    RewriteBase /

    # Removes index.php from ExpressionEngine URLs
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteCond %{REQUEST_URI} !/system/.* [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

    # Directs all EE web requests through the site index file
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

3 个答案:

答案 0 :(得分:0)

给它一个旋转。

RewriteRule ^project/([^/]*)$ /project/index.php?p=$1&u=123&l=k [L, QSA]

答案 1 :(得分:0)

可以重定向错误代码

ErrorDocument 404 /index.php

通过这种方式你可以要求www.domain.com/project/settings女巫不存在,而不是错误404,你被重定向到/index.php

$uri_asked = explode("/", $_SERVER['PHP_SELF']);

然后你有

$uri_asked[3]="project";
$uri_asked[4]="settings";

你可以建立像

这样的东西
include("www.domain.com/index.php?p=".$uri_asked[3]."&u=".$uri_asked[4]);

答案 2 :(得分:0)

您可以使用此规则来丢弃不需要的查询字符串:

RewriteEngine On

RewriteCond %{THE_REQUEST} /index\.php\?p=([^&\s]+) [NC]
RewriteCond %{REQUEST_URI} !/system/ [NC]
RewriteRule ^(.*?)index\.php$ /$1%1? [R=301,NE,L]