Php 在apache中使用.htacces文件清除url重写
我有一个我写博客的网站。。。在我的blog.php页面上,我有来自不同类别的帖子。 当用户单击链接时,它将被重定向到带有Php 在apache中使用.htacces文件清除url重写,php,apache,.htaccess,url-rewriting,Php,Apache,.htaccess,Url Rewriting,我有一个我写博客的网站。。。在我的blog.php页面上,我有来自不同类别的帖子。 当用户单击链接时,它将被重定向到带有$\u GET['title']变量的/blog-details.php页面 我试过的 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f #remove .php from all pages RewriteRule ^([^\.]+)$ $1.php [NC] #blog/title-here RewriteRule
$\u GET['title']
变量的/blog-details.php页面
我试过的
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
#remove .php from all pages
RewriteRule ^([^\.]+)$ $1.php [NC]
#blog/title-here
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]
最后一行告诉我
xyz.com/blog details?title=hello world
我想要达到的是
xyz.com/blog/hello-world
不像
xyz.com/blog details?title=hello world
谢谢,期待您的回答。处理.htaccess文件时必须考虑的一件重要事情是,您必须检查路径是否为目录或文件,然后继续执行操作 我使用了您的代码,它工作正常,但只是添加了-f和-d检查,以确保这不会影响其他页面
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
#remove .php from all pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC]
#blog/title-here
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]
为了测试您的.htaccess文件和一些虚拟URL,我强烈建议您签出MadeWithLove
这将让您拥有一个测试输入URL,并查看您是否获得了正确的输出URL(服务器将读取的实际URL)
话虽如此,我还是建议您研究一下未来项目的路线和自我开发。我推荐一个用于PHP的无脂肪框架(f3)。它非常容易入门,您可以在2天内学会,并且它通过包含路由、ORM、全局变量、简化的SQL查询和大量其他功能节省了大量开发时间,这些功能本质上让您成为PHP开发人员,而不是框架开发人员 使用以下方法:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^blog/([0-9a-zA-Z_=-]+)$ blog-details.php?title=$1 [NC]
</IfModule>
重新启动发动机
重写规则^blog/([0-9a-zA-Z_u=-]+)$blog details.php?title=$1[NC]
然后您可以访问页面上的标题,如$\u GET['title']。您想要的和尝试的不同,您是否希望
blog/
出现在url中?另外,链接到/blog details.php?title=XYZ
不会“重定向”/“重写”URL,您需要链接到/blog/XYZ
/blog就可以了,不过类似于XYZ.com/blog/title-here,谢谢您花时间。您是否尝试过使用不包含任何“特殊”字符的标题,如示例中的-
?更改为[A-Za-z0-9\-\+]
有效吗?(将-
更改为-
)您的Apache是否已设置为读取.htaccess
文件?mod_rewrite
是否已安装/启用?是的,我已经尝试过,并且“mod rewrite”也已启用,它仍在向我提供博客详细信息?title=hello world“它仍在向我提供博客详细信息?title=hello world”这是什么意思blog details?title=hello world
未重写为/blog/hello world
,这仍然是我在评论中提到的有效url。/blog/hello world
有效吗?谢谢你的回答,我正在使用xampp,我打开了loadModule进行mod_rewrite
也AllowOverride All
,但它仍在向我提供博客详细信息?title=hello-world@NaikJavaid,尝试在Windows上使用Ctrl+Shift+R多次强制刷新页面(我想Mac上的Cmd+Shift+R),然后重试。链接xyz.com/blog/hello-world应该正确显示xyz.com/blog details.php?title=hello-world——如果这不起作用,那么您的代码中可能会有另一个重定向到其他地方。先生,当用户单击“阅读更多到blog详细信息”页面时,我会从blog.php发送请求…
我在blog.php区域中有这个链接d更多按钮将href内容更改为“blog/”它应该是有效的。那样的话,你会有xyz.com/blog/title在这里。我从你以前的评论中读到,你希望它显示为xyz.com/blog/title-here,这就是为什么我提供这个解决方案,否则你应该详细说明你最初想要什么。不过,如果我诚实的话,这是博客通常采用的标准化方式显示他们的内容,这样我就不建议去想其他的事情了——在“blog.php”页面的链接中添加blog/
之后,它会抛出404。无论如何,谢谢你花时间@patrickYounes