php - codeigniter 中的产品详细信息页面路由

标签 php .htaccess mod-rewrite codeigniter-url codeigniter-routing

在我的本地站点

http://localhost/giftsware/nl/products/details/2382

这是我的产品描述页面的浏览器 url 现在我想要更多用户友好的产品描述页面 url。我想将上面的 url 更改为

http://localhost/giftsware/products/2382

我尝试通过添加将所有调用路由到详细信息

$route['products/(:any)'] = "nl/products/details/$1";

这是在 routes.php 文件中,但它给了我 404 错误。 可能的问题是什么?我该如何解决?

这是我完整的路由文件代码

$route['(:any)/products/(:num)'] = "products/details/$2";
$route['default_controller'] = "pages";
$route['404_override'] = '';

$route['^en/admin/([a-zA-Z_-]+)/(:any)']    = '$1/admin/$2';
$route['^en/admin/(login|logout)']          = 'admin/$1';
$route['^en/admin/([a-zA-Z_-]+)']           = '$1/admin/index';
$route['^nl/admin/([a-zA-Z_-]+)/(:any)']    = '$1/admin/$2';
$route['^nl/admin/(login|logout)']          = 'admin/$1';
$route['^nl/admin/([a-zA-Z_-]+)']           = '$1/admin/index';
$route['admin']                         = 'admin'; 

$route['pages/(:any)'] = "pages/index/$1";


$route['^nl/(.+)$'] = "$1";
$route['^en/(.+)$'] = "$1";


$route['^nl$'] = $route['default_controller'];
$route['^en$'] = $route['default_controller'];

最佳答案

尝试一下

$route['^nl/products/details/(\d+)$'] = 'products/$1';

使用 .htaccess 文件

  Options +FollowSymLinks
      RewriteEngine On

      RewriteCond %{SCRIPT_FILENAME} !-d
      RewriteCond %{SCRIPT_FILENAME} !-f

      RewriteRule ^products/(\d+)*$ ./nl/products/details/$1

使用 php

<?php
    #remove the directory path we don't want
    $request  = str_replace("nl/products/details", "products", $_SERVER['REQUEST_URI']);
  ?>

关于php - codeigniter 中的产品详细信息页面路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581754/

相关文章:

php - 当没有类作用域处于事件状态时,无法访问 self::

linux - 关闭对文件夹的访问,但打开对文件的访问

apache - 在 htaccess 中屏蔽 URL 重写

html - 除非用户清除缓存,否则不会在网站上显示新内容

apache - 在 rewriteCond 中匹配 HTTP_HOST?

regex - RewriteCond 中的空间

php - iPhone SDK 付款后,我的 php IPN 回调中缺少 POST 参数

php - 忽略 Zend_Http_Client 中的 SSL 错误

PHP $_SESSION 是服务器端还是本地?

php - 从 URL Laravel 5 中删除 index.php