httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ben Johnson <...@indietorrent.org>
Subject Re: [users@httpd] moving from mod_php to mod_fcgid : rewrite problem
Date Tue, 12 Feb 2013 18:40:51 GMT


On 2/12/2013 10:59 AM, Riccardo Cohen wrote:
> Thanks Ben, here are the answers :
> 
>> 1.) Where have you defined the rewrite rule? In a .htaccess file?
> 
> in .htaccess
> 
>> 2.) Have you defined a RewriteBase? If so, what is it?
> 
> no change with or without
> 
>> 3.) Have you reviewed Apache's access log at all?
> 
> I'll have a look now
> 
>> 4.) Have you increased RewriteLogLevel to, say, 4, to see exactly what
>> the mod_rewrite engine is doing?
> 
> I'll try that. Is it possible to set it in .htacces or must I change
> global apache configuration (I only have access to my .htaccess in this
> hosting).

Unfortunately, RewriteLogLevel can be set in the "server config" and
"virtual host" contexts only. (You can make this type of determination
in the future by visiting the manual page and looking for the "context"
value:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteloglevel .)

This is one of many reasons for which hosting on a VPS over which you
have complete control is beneficial.

In any case, we'll have to proceed without access to the rewrite log.

Is there a specific reason for which you're using "./index.php" in the
right-hand side of the rule? I'm referring to the period ("."), in
particular. This may well be the source of the problem. It could be that
mod_php interprets that relative path (./index.php) "correctly", whereas
mod_fcgid does not.

Try this:

RewriteRule ^en/(.*) index.php/en/$1

-Ben



> Thanks
> 
> On 12/02/13 14:53, Ben Johnson wrote:
>>
>>
>> On 2/12/2013 2:16 AM, Riccardo Cohen wrote:
>>> Hello
>>> I received some clues from this list members, thanks for that. But
>>> unfortunately my problem is not solved.
>>>
>>> It's not that I want others to focus on me, but I'm quite sure that
>>> there is a real problem (if not why would it work perfectly on mod_php
>>> ?), I could not find any solution googling about it (even with the help
>>> of the host technical team), and I would like a confirmation that 1)
>>> it's not an error from my understanding, and 2) there is no workaround
>>> for it.
>>
>> I doubt it is a problem with the software. mod_rewrite has been put
>> through the paces over the years and I'd be shocked if a bug were
>> uncovered given your rule's relative simplicity.
>>
>> Before digesting your post in its entirety, I have a couple of questions
>> first.
>>
>> 1.) Where have you defined the rewrite rule? In a .htaccess file?
>>
>> 2.) Have you defined a RewriteBase? If so, what is it?
>>
>> 3.) Have you reviewed Apache's access log at all?
>>
>> 4.) Have you increased RewriteLogLevel to, say, 4, to see exactly what
>> the mod_rewrite engine is doing?
>>
>> -Ben
>>
>>
>>
>>> So I'll be very pleased to here from some qualified developer before I
>>> spend 2 days to modify and retest all my application.
>>>
>>> Thanks in advance.
>>>
>>> On 07/02/13 11:17, Riccardo Cohen wrote:
>>>> Sorry to insist but I'm really blocked and I really need help.
>>>> Here is a small summary for those who don't want to read all :
>>>>
>>>> I want to make a rewrite from :
>>>>
>>>> http://www.perspectives-musicales.org/en/all-albums
>>>> to
>>>> http://www.perspectives-musicales.org/index.php/en/all-albums
>>>>
>>>> my rewrite rule is
>>>>
>>>> RewriteRule ^en/(.*) ./index.php/en/$1
>>>>
>>>> This works when apache is runnnig with mod_php, but not when running
>>>> mod_fcgid (php as cgi). In cgi mode I have a 404 error.
>>>>
>>>> The Apache version is 2.2.23 and mod_fcgid is version 2.3.7 with
>>>> configuration flag cgi.fix_pathinfo=1
>>>>
>>>> Thanks for your help.
>>>>
>>>>
>>>> On 05/02/13 21:32, Riccardo Cohen wrote:
>>>>> Hello
>>>>> I'm new to apache mailing list, sorry if I'm not 100% clear, and sorry
>>>>> for this long description.
>>>>>
>>>>> I have developped a website with php/mysql :
>>>>> http://www.perspectives-musicales.org and placed it on a good hosting
>>>>> service (web4all.fr).
>>>>> To improve search engine rank I decided to set all urls to
>>>>> /index.php/... and rewrite them to avoid having index.php in url (sort
>>>>> of MVC technique combined with SEO...)
>>>>>
>>>>> Example : the catalog is at url :
>>>>> http://www.perspectives-musicales.org/en/all-albums
>>>>> This should be transparantly mapped to
>>>>> http://www.perspectives-musicales.org/index.php/en/all-albums
>>>>> thanks to
>>>>> the rewrite rule :
>>>>>
>>>>> RewriteRule ^en/(.*) ./index.php/en/$1
>>>>>
>>>>> My application uses then $_SERVER["PATH_INFO"] (and not
>>>>> $_SERVER["QUERY_STRING"]) to retreive url information. This worked
>>>>> perfectly until last month, because web4all.fr changed the whole
>>>>> system
>>>>> and separated apache from php, using fast cgi instead of mod_php.
>>>>>
>>>>> The system is supposed to be more reliable and more efficient like
>>>>> this,
>>>>> and apparently is. But the rewrite rule does not work anymore. So I
>>>>> investigated and made some test :
>>>>>
>>>>> I have a small test.php that displays the path_info and query_string.
>>>>> You can presently test it here :
>>>>>
>>>>> http://perspectives-musicales.org/test1/a/b/c
>>>>> http://perspectives-musicales.org/test2/a/b/c
>>>>> http://perspectives-musicales.org/test3/a/b/c
>>>>> http://perspectives-musicales.org/test4/a/b/c
>>>>>
>>>>> and I set the following rules :
>>>>>
>>>>> RewriteRule ^test1/(.*) ./test.php/$1
>>>>> RewriteRule ^test2/(.*) ./test.php?$1
>>>>> RewriteRule ^test3/(.*) ./test.php?/$1
>>>>> RewriteRule ^test4/(.*)
>>>>> http://www.perspectives-musicales.org/test.php/$1
>>>>>
>>>>> None of these 4 rewrite rules are convenient. Here is why :
>>>>>
>>>>> - test1 : the system anwsers 404 "No input file specified". I think
>>>>> (not
>>>>> sure) that Apache beleives that test.php is a folder, and cannot
>>>>> find it
>>>>> so answers 404
>>>>>
>>>>> - test2 : the rewrite rule works, but of course the url information is
>>>>> no more in path_info, it is in query_string as shown in the page
>>>>> content
>>>>>
>>>>> - test3 : same as test2
>>>>>
>>>>> - test4 : almost good, I can have the url info in path_info, but
>>>>> apache
>>>>> begins first with a 302 redirection and then changes the url to
>>>>> http://www.perspectives-musicales.org/test.php/a/b/c, which looses all
>>>>> search engine efficiency (and also eventual POST variables if any).
>>>>>
>>>>> My host tried several searches on forums including this one, and could
>>>>> not find any answer. It seems to be an apache bug, but not sure, I
>>>>> have
>>>>> no bug number to give anyway. If it is a bug, it is demontrated by
>>>>> test1
>>>>> I think.
>>>>>
>>>>> So here is my question : Is there any way to make this rewrite rule
>>>>> work
>>>>> in fastcgi mode, and what is the syntax for it, to keep info in
>>>>> path_info without 302 redirection. The Apache version is 2.2.23  and
>>>>> mod_fcgid is version 2.3.7 with configuration flag cgi.fix_pathinfo=1
>>>>>
>>>>> If there is a way, thanks for your help I'd be glad to test it. If no
>>>>> could you explain why and how to solve it. As workaround we used test4
>>>>> syntax in the whole site, to make it work, but it is bad for search
>>>>> engine, and creates problem in backoffice (because certain backoffice
>>>>> functions use POST variables)
>>>>>
>>>>> I know I can change my code to use query_string everywhere instead of
>>>>> path_info, but if I can avoid changing and testing all my websites it
>>>>> would be really great
>>>>>
>>>>> Thanks a lot for your anwser.
>>>>>
>>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
>> For additional commands, e-mail: users-help@httpd.apache.org
>>
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message