.htaccess 如何使用htaccess重写url?

.htaccess 如何使用htaccess重写url?,.htaccess,.htaccess,我试图将我的url从“www.example.com/article.php?title=blub”重写为“www.example.com/blub” 但它不起作用 RewriteEngine on RewriteRule (.*)\.html$ article.php?title=$1 这段代码可以工作,但只能使用html扩展名 但是,我不想使用这个扩展 提前感谢。这应该适合您: Options +FollowSymLinks -MultiViews RewriteEngine On Re

我试图将我的url从“www.example.com/article.php?title=blub”重写为“www.example.com/blub”

但它不起作用

RewriteEngine on
RewriteRule (.*)\.html$ article.php?title=$1
这段代码可以工作,但只能使用html扩展名

但是,我不想使用这个扩展


提前感谢。

这应该适合您:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /wiki/

# we don't want to rewrite existent directories
RewriteCond %{REQUEST_FILENAME} !-d
# we don't want to rewrite existent files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ article.php?title=$1 [L]
代码的问题在于它不会检查文件是否存在,因此当您在没有
\.html
的情况下重定向它时,它会进入一个循环,因为它不关心
article.php
是否存在


通过评论,OP发现他的文件不在根文件夹中,正如他在问题
www.example.com/article.php?title=blub
中所述,而是在名为
wiki

的子文件夹中。谢谢,这对我有点帮助,但仍然存在一个问题:它重写了所有不存在的页面。另一个问题是:新的URL在问号处被打断,因此“www.example.com/blub”重定向到“www.example.com/article.php”。同样值得指出的是,如果您的
.htaccess
上有其他规则,您应该告诉我,因为它们可能会影响上述结果。也就是说,如果你没有其他规则的话。将您的
article.php
重命名为
articles.backup.php
,并创建一个新的
article.php
文件,该文件的内容为
,以确保它不会像应该的那样向它传递任何参数,因此,我只能认为您的文章文件不知道如何处理它给出的参数。还要记住,上面的
.htaccess
规则是使
www.example.com/blub
工作,因此,如果您访问
www.example.com/blub
,它应该在内部显示
www.example.com/article.php?title=blub
,而不更改浏览器URL。否,php文件是正确的。错误:“未找到此服务器上未找到请求的URL/article.php”。该错误意味着您在
domain.com/article.php
上没有
article.php
,那么文件在哪里?