Seb*_*bas 6 .htaccess url-rewriting
我最近在SO的帮助下解决了我的htaccess rewriterule问题:
结果是当有人进入时
whatever.example.com/anypage
Run Code Online (Sandbox Code Playgroud)
在地址栏中,htaccess会自动重定向到
whatever.example.com/somepath/whatever/anypage
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到一种方法,只需whatever.example.com/anypage在地址栏中whatever.example.com/somepath/whatever/anypage显示所显示的内容.
在我之前提到的帖子中,Jon Lin清楚地提到了以下内容:
重定向始终会更改浏览器的URL地址栏中的内容
但是,我知道一些非常频繁的网址重写案例会在地址栏中显示,例如:
example.com/article-1-15
Run Code Online (Sandbox Code Playgroud)
但实际上显示的内容
example.com/somepath/somepage.php?article=1&otherparam=15
Run Code Online (Sandbox Code Playgroud)
这怎么可能适用于我的情况?我真的希望有一个小小的网址,但似乎我错过了一些东西.
你可以尝试这样的事情:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/([^/]+)$
RewriteRule .* http://whatever.example.com/somepath/whatever/%1 [L]
Run Code Online (Sandbox Code Playgroud)
它将映射:
http://whatever.example.com/anypage
至资源:
http://whatever.example.com/somepath/whatever/anypage
始终显示在浏览器的地址栏中:
http://whatever.example.com/anypage
更新
如果任何内容都是动态的并且在替换 URI 中相同,则这里是另一个选项:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ([^/]+)\.example\.com.*
RewriteCond %{REQUEST_URI} ^/([^/]+)$
RewriteRule .* http://%1.example.com/somepath/%1/%2 [L]
Run Code Online (Sandbox Code Playgroud)
只要替换路径中的两个“whatever”相同,这就会起作用。如果不是,则必须对最后一个“无论如何”进行硬编码,如下所示:
RewriteRule .* http://%1.example.com/somepath/whatever/%2 [L]
Run Code Online (Sandbox Code Playgroud)
没有其他办法,因为传入的 URL 没有它。
| 归档时间: |
|
| 查看次数: |
20210 次 |
| 最近记录: |