Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在apache中使用.htacces文件清除url重写_Php_Apache_.htaccess_Url Rewriting - Fatal编程技术网

Php 在apache中使用.htacces文件清除url重写

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

我有一个我写博客的网站。。。在我的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 ^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