用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2452|回复: 7
收起左侧

.htaccess文件URL重写的问题

[复制链接]
发表于 2017-6-6 14:29:56 | 显示全部楼层 |阅读模式
想要把http://waimao.ubuntu.com/index.php/web/home/product_detail?p_id=64这个URL重写为http://waimao.ubuntu.com/goods/64这个样子, 在.htaccess文件下添加了如下规则:
RewriteRule ^goods/([0-9]+)/?$ index.php/web/home/product_detail?p_id=$1 [L]
 楼主| 发表于 2017-6-6 14:30:33 | 显示全部楼层
但是不成功, 请问是哪儿有问题呢???
 楼主| 发表于 2017-6-6 14:31:13 | 显示全部楼层
服务器是ubuntu+apache2
 楼主| 发表于 2017-6-6 14:37:28 | 显示全部楼层
.htaccess的全部内容如下
  1.   
  2. <IfModule mod_rewrite.c>
  3. RewriteEngine on
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteCond $1 !^(index\.php|static|min|alipay|weixinpay|pingpp|upload|images|Batch_trans_notify-PH    P-UTF-8|robots\.txt)
  7. RewriteRule ^(.*)$ index.php/$1 [L]
  8. RewriteRule ^goods/([0-9]+)/?$ index.php/web/home/product_detail?p_id=$1 [L]
  9. </IfModule>
复制代码
发表于 2017-6-6 16:03:16 | 显示全部楼层
建议 url rewrite 的问题,首先看 url rewrite 的手册,然后可以打开 rewrite log 调试下。
发表于 2017-6-6 16:21:11 | 显示全部楼层
你的路由规则写错了,RewriteRule ^(.*)$ index.php/$1 [L]后面的[L]表明当前规则是最后一条规则,停止分析以后规则的重写。
另外你的这个直接用框架里的routes就可以了,例如
PHP复制代码
$route['goods/(:num)'] = "web/home/product_detail?p_id=$1";
复制代码
 楼主| 发表于 2017-6-30 16:37:58 | 显示全部楼层
Michael锐生 发表于 2017-6-6 16:21
你的路由规则写错了,RewriteRule ^(.*)$ index.php/$1 [L]后面的[L]表明当前规则是最后一条规则,停止分析 ...

框架里这样写路由规则是不行的,报错404
发表于 2017-7-5 10:28:50 | 显示全部楼层
张奇怪_jr7Kk 发表于 2017-6-30 16:37
框架里这样写路由规则是不行的,报错404

你看一下有没有跳转到你的方法里面去,或者你用原地址看是否正常

本版积分规则