我想在我的网站的.htaccess中创建一个重写,以便当用户请求URL A时,内容来自URL B,但用户仍然将URL视为URL A.
所以,例如,假设我在mydomain.com/projects/project-example上有内容。我希望用户能够请求mydomain.com/project-example,仍然可以在地址栏中看到该URL,但浏览器应显示mydomain.com/projects/project-example中的内容。
我已经查看了几个.htaccess重写提示和常见问题解答,但不幸的是,它们似乎都没有提供我上面所描述的解决方案。并非我域上的所有内容都来自/ projects /目录,所以我想重写时应检查页面是否存在,因此它不会将/ projects /追加到每个url。我真的很难过。
如果重写不是我需要的,或者如果有一个简单的解决方案,我很乐意听到它。
答案 0 :(得分:1)
本教程应该包含您需要的所有内容,包括准确解决您的问题:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html。这可能只是一个术语问题。
所以,例如,假设我在mydomain.com/projects/project-example上有内容。我希望用户能够请求mydomain.com/project-example,仍然可以在地址栏中看到该URL,但浏览器应显示mydomain.com/projects/project-example中的内容。
有类似的东西:
RewriteRule ^project-example$ /projects/project-example [L]
当有人请求http://mydomain.com/project-example并且URI /project-example
被内部重写为/projects/project-example
时。请注意,当它位于.htaccess文件中时,URI /project-example
会在匹配时删除前导斜杠。
如果你有一个东西的目录,你可以使用正则表达式和反向引用,例如你希望http://mydomain.com/stuff/的任何请求映射到/internal/stuff/
:
RewriteRule ^stuff/(.*)$ /internal/stuff/$1 [L]
因此,对http://mydomain.com/stuff/file1.html,http://mydomain.com/stuff/image1.png等的请求会被重写为/internal/stuff/file1.html
,/internal/stuff/image1.png
等。