温馨提示:本文翻译自stackoverflow.com,查看原文请点击:php - Removing extensions with .htaccess but keeping Parameters causes unstyled page
.htaccess php

php - 使用.htaccess删除扩展名,但保留参数会导致页面样式未设置

发布于 2020-04-12 11:25:58

我正在尝试构建用于重定向或“美化” URL的结构。

我想获得以下结果:

  • 像domain.com/signup.php这样的URL应该由domain.com/signup访问
  • 参数设置程序应类似于domain.com/signup/HASH会导致domain.com/signup.php?hash=HASH
  • 如果可能的话,多个参数应该可以扩展,例如domain.com/signup/HASH/VERIFIED-> domain.com/signup.php?hash=HASH&status=verified

我目前的做法是

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA]

我尝试了很多,但要么无法正常工作,要么会以无样式的页面结尾。有什么建议么?

查看更多

提问者
18zehn
被浏览
68
Croises 2020-02-02 22:03

在页面中使用绝对链接。
如果您在页面中使用任何图形或链接,请不要使用“相对链接”。而是将所有链接设为以开头的“绝对链接” http://www.example.com/...

或相对根链接,以href值开头/

在您的情况下:http://www.example.com/css/Stylesheet.css/css/Stylesheet.css;

您还可以添加html <head><base href="/">

如果仅在网站的根目录使用参数,则可以使用:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/?$ $1.php [L]

# with one parameter
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?hash=$2 [L,NE,QSA]

# with two parameters
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1.php?hash=$2&status=$3 [L,NE,QSA]