mod_rewrite通过php脚本提供html页面

时间:2013-03-31 22:01:09

标签: .htaccess mod-rewrite

首先,我设置了重写规则,允许从网址中删除.html。

我还创建了一个php脚本,我希望为所有HTML页面提供服务。这样,我可以创建并链接到一个简单的html页面,但它将由我的php脚本处理。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ /folder/webpage.php?view=webpage_handler&file=$1.html [L]

所以不要链接到www.mysite.com/page.html,而是链接到www.mysite.com/page,这样我就可以通过webpage.php访问page.html

我还希望能够在其他一些情况下链接到page.html(不删除.html扩展名)并仍然让我的webpage.php处理页面视图。

我试过了:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ /folder/webpage.php?view=webpage_handler&file=$1.html [L]

RewriteRule ^(.*\.(html))$ /folder/webpage.php?view=webpage_handler&file=$1 [L]

但这并不像预期的那样有效。我不确定第二条规则是否有效,我相信它们彼此冲突......但我不知道如何修复它。

是否有一种安全的方式可以让我链接到“/page.html”和“/ page”并获得我的预期结果?

1 个答案:

答案 0 :(得分:0)

经过更多的反复试验,我了解到我所拥有的实际上是正确的。出于某种原因,我的“视图”变量被删除,这导致我的脚本无法正常运行。

我的$ _GET ['view']变量在webpage.php中是空白的,但$ _GET ['file']变量设置得应该如此。

我改变了

view=webpage_handler

view=handle_webpage

就是这样。它现在工作正常。显然这是我所做的,但我不知道是什么。