截至目前,我的htaccess看起来像这样
RewriteEngine On
RewriteCond %{QUERY_STRING} ArticleID=([^&]+)
RewriteRule ^article.cfm$ /articles.php?id=%1 [R=301,L]
RewriteRule ^([a-zA-Z0-9-]+)$ page.php?slug=$1
RewriteRule ^([a-zA-Z0-9-]+)/$ page.php?slug=$1
ErrorDocument 404 "<H1>Page not found</H1>"
前三行允许我将通过.cfm访问文章的用户重定向到.php
对于第4行和第5行,我的网站允许通过WYSIWYG编辑器创建页面,并允许用户访问它。实际网址看起来像www.website.com/page.php?slug=homepage但在重写规则之后,它看起来像www.website.com/homepage
然而,我遇到的问题是我的管理页面如www.website.com/admin/被视为页面之一,所以我添加了以下代码并且可以正常工作
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [L]
但我还有几个问题。
如果您访问无效页面,例如www.website.com/hello/,当用户根本没有创建此类页面时,它仍会显示page.php,但内容为空,我该如何操作将其重定向到404页面?
如何保护没有index.php页面的目录?比如我的图片文件夹,包括文件夹,javascript文件夹等?
我现在的整个htaccess是否正确?
非常感谢你们的帮助!我对mod_rewrite并不擅长,所以我将非常感谢你的帮助!
答案 0 :(得分:1)
如果您访问无效页面,例如www.website.com/hello/ 根本没有用户创建的这样的页面,它仍然会显示 page.php但内容空白,如何将其重定向到404页面?
你应该用PHP做到这一点。如果未包含任何内容,请使用header()
重定向到404。
如何保护没有index.php页面的目录? 比如我的图片文件夹,包括文件夹,javascript文件夹等?
将此添加到.htaccess:Options -Indexes
我目前的整个htaccess是否正确?
看起来很好。