使用.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 删除 .php 扩展名会重复我的页面吗?