繁体   English   中英

.htaccess网址重写不起作用?

[英].htaccess url rewriting not working?

老实说,我对.htaccess经验很少,因为我一直想尽可能地远离它。 但是,我最近想整理一下URL,我发现可以通过.htaccess和重写来实现。

基本上,我想像这样重写网址:

www.mysite.com/profile.php?id=48194

像这样:

www.mysite.com/profile/48194

这是我目前拥有的代码:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^profile/(.*)/$ profile.php?id=$1

我要使用的行位于最底端, RewriteRule ^profile/(.*)/$ profile.php?id=$1 其余的用于从网址中删除页面扩展。 我将$1更改$1 $2以为它可能与上面的代码冲突,但是什么都没有改变。

我还删除了除RewriteEngine on之外的所有代码RewriteEngine on并在最后一行认为代码可能有冲突,但是再次没有更改或工作。 其余代码确实可以正常工作,即从url中删除扩展名,因此我知道重写的事情已经开始了。

有人可以尝试分解并解释我做错了什么以及所有这些工作原理吗? 除了提供我要完成的事情的可行示例之外?

提前致谢!

更改规则的顺序并使用MultiViews选项。 Option的MultiViewsApache's content negotiation module ,该Apache's content negotiation modulemod_rewrite之前运行,并使Apache服务器匹配文件扩展名。 因此/file可以位于URL中,但它将提供/file.php

RewriteEngine on
RewriteBase /

RewriteRule ^profile/([^/]+)/?$ profile.php?id=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ $1.php [L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM