我想重写https://blog/home/post?read=example到https://blog/home/ex



我尝试了很多方法,但都没有成功。Blog是域名,Home是域中的一个文件夹,post.php是从数据库中获取详细信息的页面。因此,在我的领域,我有:home/post.php

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_-]+)$ /post?read=$1 [L]    # Handle page requests

上面是我使用的最后一个代码,它不起作用。我得到一个404错误。

RewriteEngine On    # Turn on the rewriting engine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_-]+)$ /post?read=$1 [L]    # Handle page requests

.htaccess位于文件夹的根目录中。

您似乎忽略了home子目录。(尽管您在问题中提到了homeHome,但请注意,这是区分大小写的。(;CCD_ 4是一个PHP文件;那么您应该重写为post.php,而不仅仅是post

请注意,Apache不支持行尾注释,正如您在这里使用的那样。(往好了说它们被忽略,往坏了说它们会触发500个错误。(

如果.htaccess文件位于文档根目录中,正如您所建议的那样,那么您需要按照以下方式编写规则:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^home/([w-]+)$ home/post.php?read=$1 [L]

w的简写字符类与[A-Za-z0-9_]相同。

RewriteRule模式与相对于.htaccess文件位置的URL路径相匹配。

另一方面,如果.htaccess文件在/home子目录中(即在/home/.htaccess(,那么您应该这样写规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([w-]+)$ post.php?read=$1 [L]

注意,替换字符串上没有斜杠前缀。

相关内容

最新更新