使用.htaccess重写URL以进行登录和配置文件系统

时间:2014-04-06 14:15:49

标签: php apache .htaccess url mod-rewrite

我有一个网址,网址为localhost/project/profile.php?user=username,我想让网址看起来像这样:localhost/project/username

我能做的最多就是使用以下代码摆脱.php

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

但这不是我现在所需要的。 这是用于更改URL的代码 - 我将其从另一个线程中删除。

Options FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?user=$1 [L,QSA]

但它显然不起作用。

我需要能够转到网址:localhost/project/username并将其注册为原始网址localhost/project/profile.php?user=username

**答案**

感谢 Howlin

RewriteEngine On

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /project/profile\.php\?user=(.*)\ HTTP
RewriteRule ^ /project/%2\? [R=301,L]

RewriteCond %{QUERY_STRING} !user=
RewriteRule ^(.*)$ /project/profile.php?user=$1 [L]

2 个答案:

答案 0 :(得分:0)

试试这个:

Options FollowSymLinks

RewriteEngine On
RewriteBase /project/

RewriteRule ^([^/]+)/?$ profile\.php?user=$1 [L,NC,QSA]

答案 1 :(得分:0)

这应该有效:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /project/profile\.php\?user=(.*)\ HTTP
RewriteRule ^ /project/%2\? [R=301,L]

RewriteCond %{QUERY_STRING} !user=
RewriteRule ^project/(.*)$ /project/profile.php?user=$1 [L]

以上内容会将project/profile.php?user=username更改为project/username,并会从project/profile.php?user=username页面加载信息

编辑:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /project/profile\.php\?user=(.*)\ HTTP
RewriteRule ^ /project/%2\? [R=301,L]

RewriteCond %{QUERY_STRING} !user=
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^(.*)$ /project/profile.php?user=$1 [L]
相关问题