問題描述
Cách ẩn mọi thứ sau tên trang web của bạn bằng .htaccess (How to hide everything after your webpage name with .htaccess)
When I enter my site and when I browse other sites, I get a parameter more: etc .php?p=pagename&id=1
I would like to hide everything after .dk
I have tried:
RewriteEngine On
RewriteRule ^([a‑zA‑Z0‑9]+)$ index.php?p=$1 [L,QSA]
RewriteRule ^([a‑zA‑Z0‑9]+)/$ index.php?p=$1 [L,QSA]
RewriteRule ^/index.php$ http://www.madsweb.dk/ [R,NC,L]
But it doesn't seem to work.
Can anyone help me out?
參考解法
方法 1:
RewriteRule ^/index.php$ http://www.madsweb.dk/ [R,NC,L]
Rewrites work the other way around. You don't rewrite what the user sees in his address bar but you rewrite a request to another request (like a redirect, but handled transparently on the server).
That's also the reason that what you try to do there is not possible.
You could use a frame instead if you like the 90s and don't care about usability.
But jokes aside, it's the best to build upon this rule, which is already good:
RewriteRule ^([a‑zA‑Z0‑9]+)$ index.php?p=$1 [L,QSA]
and get the additional information (id
in this case) into the pattern. Example:
RewriteRule ^([a‑zA‑Z0‑9]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a‑zA‑Z0‑9]+)/([0‑9]+)$ index.php?p=$1&id=$2 [L,QSA]
or more general (but still only one parameter):
RewriteRule ^([a‑zA‑Z0‑9]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a‑zA‑Z0‑9]+)/([a‑zA‑Z0‑9]+)/([0‑9]+)$ index.php?p=$1&$2=$3 [L,QSA]
方法 2:
I would like to hide everything after .dk
This is impossible. mod_rewrite cannot remove the need to have unique URLs for each resource.
(And if you did manage to do it, then it would break linking, including bookmarking and search engines).
(by Mads Andersen、Fabian Schmengler、Quentin)