【问题标题】:.htaccess rewrite rules issue.htaccess 重写规则问题
【发布时间】:2014-01-23 22:53:08
【问题描述】:

我正在尝试使用 mod_rewrite 重写一些 url。

我想重写

localhost/exotica/pet/somePet/

`localhost/exotica/index.php/types/get/somePet/`

我已经设法通过使用删除 index.php

RewriteCond $1 !^(index\.php|resources|uploads|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /exotica/index.php/$1 [L]

所以现在localhost/exotica/types/get/somePet 有效 我已经尝试添加为第一条规则

RewriteRule ^pet/([A-Za-z0-9-]+)/?$ type/get/$1 [N]

但它根本不起作用,所以请帮助我,我不知道如何启用它

我设法通过添加路由 $route['pet/(:any)'] = "type/get/$1"; 来解决它,但我更愿意使用 .htacess 文件来解决它

【问题讨论】:

  • /exotica/pet/somePet/(传入的SEO格式)到/exotica/index.php/types/get/somePet/是无稽之谈。充其量,您仍然需要重写为“动态”格式,例如/exotica/index.php?types=xxxxx&op=get&name=somePet,您不妨“预先”这样做。
  • @anubhava 没有问题没有解决,因为我想使用 mod rewrite 而不是 codeigniter rutes 来做。
  • @PhilPerry 我真的不明白你。您是否建议我使用第三种类型?第二种类型的 url 是 codeigniter 使用的,第一种类型的 url 是我想要使用的,需要它重写为第二种。真的不知道第二个是否被 codeigniter 在内部重写为第三个
  • 上述 .htaccess 文件的位置是什么?是在DocumentRoot 还是DocumentRoot/exotica
  • 我的意思是您最终必须得到/index.php?var1=value1&var2=value2 等格式,以便服务器和PHP 能够处理它。将一种 SEO 格式转换为另一种格式并不能帮助您。我想可以将 SEO1 转换为 SEO2,然后然后 将 SEO2 转换为动态(非 SEO)格式,但如果您是从头开始,您不妨一步完成。通常这都是在 .htaccess 中完成的——codeigniter 是在内部完成的吗?

标签: apache .htaccess mod-rewrite codeigniter-2 codeigniter-url


【解决方案1】:

以相反的顺序尝试这样的规则:

RewriteEngine On
RewriteBase /exotica/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^pet/([A-Za-z0-9-]+)/?$ types/get/$1 [L]

RewriteCond $1 !^(index\.php|resources|uploads|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多