我最近使用.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
有人可以帮忙吗?
答案 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/anything
,anything
为login
要
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]