.htaccess mod_rewrite 删除 .php 扩展名,但保留 URL 路径

.htaccess mod_rewrite 删除 .php 扩展名,但保留 URL 路径

我目前有正常运行的 PHP 脚本,调用方式如下:

  • www.example.com/user.php/paul
  • www.example.com/tag.php/food

我无法让 .htaccess 正确重写。我正在尝试实现此目的:

  • www.example.com/user/paul
  • www.example.com/tag/food

到目前为止,我可以让 /user 重定向到 /user.php,但是 /paul 丢失了;破坏了我的脚本。

我当前的 .htaccess 如下所示:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^GET\ /([^.\ ]+\.)+php(\?[^\ ]*)?\ HTTP
RewriteRule ^(.+)\.php$ http://www.example.com/$1 [R=301,L]
RewriteRule ^([^/]+/)*index/?$ http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ http://www.example.com/$1 [R=301,L]
RewriteCond $1 !^([^.]+\.)+([a-z0-9]+)$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*[^/])$ /$1.php [L]

请帮忙。谢谢!保罗

答案1

RewriteRule ^(.+)\.php$ http://www.example.com/$1 [R=301,L]

看起来应该是这样的:

RewriteRule ^(.+)\.php/(.+)$ http://www.example.com/$1/$2 [R=301,L]

对于括号内的每个正则表达式,括号内的项目可以在目标中作为 $N 引用。

相关内容