虚拟网址与PHP中的.htaccess

时间:2016-03-21 10:58:42

标签: php .htaccess

我正在尝试创建一个虚荣网址,以便其他人可以轻松查看用户个人资料。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule .* - [L]

RewriteRule ^(.*)$ http://localhost/test/public/profile.php?username=$1 [NC]

这是代码,但每次我在.htaccess文件中使用此代码时,我都会收到500内部服务器错误,子文件夹 public 从我的目录中消失。我错了什么?我是否需要先进行任何配置?

2 个答案:

答案 0 :(得分:1)

最好使用全局重写逻辑:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

并在你的index.php中捕获 $ _ SERVER ['REQUEST_URI'] ,如果用户存在,那么如果没有则响应,然后将处理传递给下一个程序。

但是如果你坚持要求实现,那么试试这个:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ profile.php?username=$1 [L,QSA]

答案 1 :(得分:0)

检查一下:

    Options +FollowSymLinks
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^profile/([a-zA-Z0-9_\-/]+)$ test/public/profile.php?username=$1 [L,NC]
    </IfModule>

但请注意:

  1. 您必须启用重写引擎才能使其正常工作(对于您正在使用的操作系统/系统的安装过程,请稍微google)
  2. 如果您从子目录中使用它,请输入正确的RewriteBase指令。