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

问题描述 投票:0回答:1

我正在尝试构建用于重定向或“美化” 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]

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

php .htaccess
1个回答
1
投票

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