我想:www.example.com/username
重定向到:www.example.com/user.php?id = username
尝试使用此mod_rewrite规则我发现:RewriteRule ^ user /([a-z] +)/?$ user.php?id = $ 1
我对此进行了很多研究,仍然无法让它发挥作用。我开始认为某处存在冲突......我不知道。我迷路了。
<VirtualHost 111.111.111.111.:443>
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/public
<Directory /home/public>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
RewriteEngine On
RewriteRule ^user/([a-z]+)/?$ user.php?id=$1
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</IfModule>
</VirtualHost>
答案 0 :(得分:0)
您可以使用 .htaccess 将404重定向到以与$ _GET类似的方式处理URI的.php文件,而不是mod_rewrite。 $_SERVER['REQUEST_URI']
和preg_match()
可以提供帮助。
答案 1 :(得分:0)
RewriteEngine on
RewriteRule ^user/([^/\.]+)/?$ /user.php?id=$1 [L]
这会导致所有/ user / username重定向到user.php?id = username。然后,您可以检查您的PHP:
if (isset($_GET['user'])) {
// Check if the username exists.
// SELECT ... FROM users WHERE username = ..
}