【发布时间】:2012-01-10 01:53:02
【问题描述】:
我第一次使用 htaccess 为我的网站 html 文件和 1 个 php 文件制作漂亮的 url。我只是想知道我是否能够就我的 htaccess 文件设置获得一些建议,以及我如何设置它是一个好方法?由于我所写的内容,我讨厌我的网址在某些情况下不起作用。 :(
示例 html 文件:
before: http://www.domain.com/subdomain/htmlpage.html
after: http://www.domain.com/subdomain/htmlpage/
单个php文件:
before: http://www.domain.com/subdomain/phppage.php?p=1
after: http://www.domain.com/subdomain/phppage/1/
我添加了一条规则,将 index.html 重定向到 index.php。我还必须在每个文件的头部添加“base href”,因为我使用了相对链接。
htaccess 文件:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^index\.html?$ / [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]
RewriteRule ^(.+)/([0-9]+)/?$ phppage.php?p=$1 [L]
【问题讨论】:
-
htmlpage现在实际上是否存在(存储)为?htmlpage.html(你只是想让它看起来像一个目录)或者现在是新文件htmlpage/index.html?您当前设置的困难 - AFAICT - 是您实际上拥有正确的 URL,您只想通过重定向和重写使它们看起来不同。当旧 URL 实际上不再有效时,事情会变得更容易,您可以将它们重写为最终的、更好的 URL。 -
htmlpage 存在并存储在根(子域)目录中 - 当您输入 /htmlpage/ 时,漂亮的 url 链接会加载 .htmlpage。我不确定如何使 .html 页面不起作用...但是如果访问者已经为 .html 页面添加了书签,那会是个坏主意吗?
-
这不是破坏事物。但是,如果您基本上将“file.html”重写为“file”,然后让您的网络服务器在内部将其自动重写回“file.html”,那么当您搞砸时,您很容易陷入重定向循环。这就是为什么我询问您的“文件”(在服务器上)是否称为
..dirs/somepage.html、...dirs/somepage/index.html或其他名称。与您要在其下提供服务的 URL 无关。 -
Jess:阅读您的其他 cmets 我不确定您是否需要从用户那里接收 URI
phppage.php?p=1并将其重写为phppage/1,反之亦然。