使用.htaccess删除扩展名,但保留参数会导致页面样式不符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用.htaccess删除扩展名,但保留参数会导致页面样式不符相关的知识,希望对你有一定的参考价值。

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

我想获得以下结果:

  • domain.com/signup应该访问URL,例如domain.com/signup.php
  • 参数应该像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]

我尝试了很多,但是要么不起作用,要么会以未样式化的页面结尾。有什么建议吗?

答案

在页面中使用绝对链接。如果您在页面中使用任何图形或链接,请不要使用“相对链接”。而是将所有链接设为以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]

以上是关于使用.htaccess删除扩展名,但保留参数会导致页面样式不符的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 重定向到新页面但保留“get”参数

使用 .htaccess 删除 .php 扩展名会重复我的页面吗?

使用 .htaccess 删除和禁止扩展名

使用 .htaccess 删除 .html 和 .php 扩展名

重定向并将参数保留在 .htaccess 的 url 中

mod_rewrite 删除 .php 扩展名并保留 GET 参数