0

我需要使用 mod_rewrite 进行翻译:

http://example.com/sitengoFrontEnd3/lista/tipo-todo/?terminos=abcd

进入:

http://example.com/sitengoFrontEnd3/lista/tipo-todo/abcd

我正在使用 codeigniter 框架。

我的 .htaccess 是:

RewriteEngine On
RewriteBase /sitengoFrontEnd3

# Esto es para el formulario de busqueda
RewriteCond %{QUERY_STRING} terminos=(.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1%1? [L]

# Esto para el codeigniter
RewriteCond %{REQUEST_URI} ^sitengoFrontEnd3.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

在这种情况下:

浏览至:

http://example.com/sitengoFrontEnd3/lista/tipo-todo/?terminos=abcd

结果(相同):

http://example.com/sitengoFrontEnd3/lista/tipo-todo/?terminos=abcd

我粘贴 LogRewrite 级别 9:

(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] add path info postfix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/lista -> /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/lista/tipo-todo/
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] strip per-dir prefix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/lista/tipo-todo/ -> lista/tipo-todo/
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] applying pattern '^(.*)$' to uri 'lista/tipo-todo/'
(4) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] RewriteCond: input='terminos=abcd' pattern='terminos=(.*)'  > matched
(4) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] RewriteCond: input='/Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/lista' pattern='!-f' => matched
(4) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] RewriteCond: input='/Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/lista' pattern='!-d' => matched
(2) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] rewrite 'lista/tipo-todo/' -> 'index.php/lista/tipo-todo/abcd?'
(3) split uri=index.php/lista/tipo-todo/abcd? -> uri=index.php/lista/tipo-todo/abcd, args=<none>
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] add per-dir prefix: index.php/lista/tipo-todo/abcd -> /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd
(2) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] trying to replace prefix /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/ with /sitengoFrontEnd3
(5) strip matching prefix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd -> index.php/lista/tipo-todo/abcd
(4) add subst prefix: index.php/lista/tipo-todo/abcd -> /sitengoFrontEnd3/index.php/lista/tipo-todo/abcd
(1) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] internal redirect with /sitengoFrontEnd3/index.php/lista/tipo-todo/abcd [INTERNAL REDIRECT]
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] add path info postfix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php -> /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] strip per-dir prefix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd -> index.php/lista/tipo-todo/abcd
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] applying pattern '^(.*)$' to uri 'index.php/lista/tipo-todo/abcd'
(4) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] RewriteCond: input='' pattern='terminos=(.*)' => not-matched
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] add path info postfix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php -> /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] strip per-dir prefix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd -> index.php/lista/tipo-todo/abcd
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] applying pattern '^(.*)$' to uri 'index.php/lista/tipo-todo/abcd'
(4) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] RewriteCond: input='/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd' pattern='^sitengoFrontEnd3.*' => not-matched
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] add path info postfix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php -> /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] strip per-dir prefix: /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php/lista/tipo-todo/abcd -> index.php/lista/tipo-todo/abcd
(3) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] applying pattern '^(.*)$' to uri 'index.php/lista/tipo-todo/abcd'
(4) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] RewriteCond: input='/Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php' pattern='!-f' => not-matched
(1) [perdir /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/] pass through /Applications/XAMPP/xamppfiles/htdocs/sitengoFrontEnd3/index.php

如果我更改 .htaccess 的这一行:

RewriteRule ^(.*)$ index.php/$1%1? [L]

对于另一个外部的:

RewriteRule ^(.*)$ http://example2.com/$1%1? [L]

然后,当我浏览到:

http://example.com/sitengoFrontEnd3/lista/tipo-todo/?terminos=abcd

结果是:

http://example2.com/lista/tipo-todo/abcd

那么,为什么它适用于外部和绝对而不是内部和相对?我花了一天的时间试图解决这个问题,但没有成功,所以欢迎任何帮助。

4

1 回答 1

0

行。谢谢您的意见。最后我用以下.htaccess解决了它:

    RewriteEngine On
    RewriteBase /sitengoFrontEnd3


    # Esto es para el formulario de busqueda
    #RewriteCond %{REQUEST_URI} ^sitengoFrontEnd3.*
    RewriteCond %{QUERY_STRING} terminos=(.*)
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ %{REQUEST_URI}%1? [R=301,L]



    # Esto para el codeigniter
    RewriteCond %{REQUEST_URI} ^sitengoFrontEnd3.*
    RewriteRule ^(.*)$ /index.php/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
于 2013-01-12T14:39:03.733 回答