mod_rewrite для перенаправления в php файл
Я хотел бы: www.example.com/username
перенаправить на: www.example.com/user.php?id=username
Пытаясь использовать это правило mod_rewrite, я нашел: RewriteRule ^user/([az]+)/?$ 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>
2 ответа
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 = ..
}
Вместо mod_rewrite вы можете использовать .htaccess для перенаправления 404-ых файлов в файл.php, который обрабатывает URI аналогично $_GET. $_SERVER['REQUEST_URI']
а также preg_match()
должно помочь