URL重写以隐藏.php和变量名称

时间:2013-02-27 15:37:36

标签: php .htaccess url-rewriting

我最近使用.htaccess了解了网址重写。作为一个初学者,对我来说这已成为一项艰巨的任务:(

我可以重写一个特定的网址,例如:

RewriteEngine On
RewriteRule    ^nothing/?$    abc.php    [NC,L]

但我对此并不满意,需要你的帮助。

我的.php文件保存在名为files的文件夹中。所以我有以下网址:

www.mysite.com/files/login.php?lf=student
www.mysite.com/files/login.php?lf=admin
www.mysite.com/files/s_home.php
www.mysite.com/files/recharge.php

我想要的很简单:

mysite.com/login
mysite.com/login
mysite.com/s_home
mysite.com/recharge

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

即使这样做会像你问的那样,你为什么试图隐藏.php扩展名呢?

答案 1 :(得分:0)

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

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

RewriteCond %{DOCUMENT_ROOT}/files/$1.php -f
RewriteRule ^([^/]+)/(.+)/?$ /files/$1.php?lf=$2 [L,QSA]

RewriteCond %{DOCUMENT_ROOT}/files/$1.php -f
RewriteRule ^([^/]+)/?$ /files/$1.php [L]

答案 2 :(得分:0)

您需要2条规则。

第一个适用于所有网址,login除外。

第二个是/login,需要额外的参数。

您可以在根目录中的.htaccess文件中尝试:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

# Maps silently all requests except for "login"
# Using the folder name as the script name.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !login  [NC]
RewriteRule ^omeca/([^/]+) omeca/files/$1.php  [L,NC]

# Maps silently requests for "login"
# passing the parameter to the appended query to the script
RewriteCond %{REQUEST_URI} !login\.php                           [NC]
RewriteRule ^omeca/login/([^/]+)    omeca/files/login.php?lf=$1 [L,NC]

无声地映射

http://example.com/omeca/anythinganythinglogin

时除外

http://example.com/omeca/files/anything.php

或者,静静地映射

http://example.com/omeca/login/parameter

要:

http://example.com/omeca/files/login.php?lf=parameter

对于永久重定向,请将[L,NC]替换为[R=301,L,NC]