Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
使用htaccess和PHP重写URL_Php_.htaccess_Codeigniter - Fatal编程技术网

使用htaccess和PHP重写URL

使用htaccess和PHP重写URL,php,.htaccess,codeigniter,Php,.htaccess,Codeigniter,我是htaccess的初学者。我有一个网址 www.example.com/article/details?id=2&category=sports&subcategory=cricket&url=ricky-ponting 我正试图在htaccess中重写此URL。 我希望上述url的格式应为: www.example.com/sports/cricket/ricky-ponting 我想从URL中隐藏文章、详细信息和id 我不知道如何创建这个URL。是否可以使用P

我是htaccess的初学者。我有一个网址

www.example.com/article/details?id=2&category=sports&subcategory=cricket&url=ricky-ponting
我正试图在htaccess中重写此URL。 我希望上述url的格式应为:

www.example.com/sports/cricket/ricky-ponting
我想从URL中隐藏文章、详细信息和id

我不知道如何创建这个URL。是否可以使用PHP在后端处理URL中隐藏的ID参数


提前谢谢。任何帮助都将不胜感激。

通过以下代码将htaccess文件放入项目根目录中

DirectoryIndex index.php
RewriteEngine on                       
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA] 
现在您可以自定义您的url。 用户在控制器和方法之后获取参数。
比如:www.example.com/article/details/sports/cricket/ricky ponting

我想你把重写和重定向混淆了。你是在使用前端控制器模式吗?如果是这样,只需使用路由库是的,您正在使用codeigniter,这应该是可能的,而不会影响.htaccess。请看这里,Codeigniter已经使用index.php作为前端控制器,所以您不必担心这一点。只需查看路由组件。如果您不想使用id,那么就不要使用,但您需要另一种方法来唯一地标识您要查找的内容,正如上面其他人所述。在你最后的评论中,
world/2018/05/21/ricky ponting
所有这些都是独一无二的(我假设类别,然后日期,然后是文章控制器中的一篇文章
slug
。最好关闭get查询并按照您的意愿构建URL,这样您就不必处理.htaccess或CI自己可以处理的任何其他方式。