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 13:53:01 GMT


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


Mime
View raw message