gregsschipper
asked on
Need .htaccess expression to trap missing pages
Hello Brilliant Ones!
ATTENTION: I need an mod_rewrite PRO, I will pay you. Greg 210 493 6193
I need an .htaccess expression to trap missing pages.
I'm using this currently in Joomla:
########## Begin - Joomla! core SEF Section
# My extra line below to direct any .htm pages to page.php (working)
RewriteRule ^([^/]*)\.htm$ /page.php?str=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.fe ed|\.pdf|\ .raw|/[^.] *)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}, L]
#
########## End - Joomla! core SEF Section
# In these lines I want to trap ANY remaining NOT found files, and direct to page.php with including the name sent to [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*) /page.php?str=$1 [L] (not working, gets 404)
I know I have 2 lines of;
RewriteCond %{REQUEST_FILENAME} !-f
I don't know how to make this work...
Thanks, Greg
ATTENTION: I need an mod_rewrite PRO, I will pay you. Greg 210 493 6193
I need an .htaccess expression to trap missing pages.
I'm using this currently in Joomla:
########## Begin - Joomla! core SEF Section
# My extra line below to direct any .htm pages to page.php (working)
RewriteRule ^([^/]*)\.htm$ /page.php?str=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.fe
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},
#
########## End - Joomla! core SEF Section
# In these lines I want to trap ANY remaining NOT found files, and direct to page.php with including the name sent to [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*) /page.php?str=$1 [L] (not working, gets 404)
I know I have 2 lines of;
RewriteCond %{REQUEST_FILENAME} !-f
I don't know how to make this work...
Thanks, Greg
I do not use Joomla, so I do not know if this will work for you but it works for me and you might be able to test it fairly easily, Here is my .htaccess:
ErrorDocument 404 /404handler.php
And here is my 404handler script:
<?php // 404handler.php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('log_errors', TRUE);
session_start();
if (isset($_SERVER["REQUEST_URI"]))
{
// LOG THE ERROR
error_log('404: ' . $_SERVER["REQUEST_URI"]);
// SAVE THE REQUEST
$_SESSION["REQUEST_URI"] = $_SERVER["REQUEST_URI"];
// IF A PHP SCRIPT IS NOT FOUND GO TO THE HOME PAGE
if (preg_match('#\.php#i', $_SERVER["REQUEST_URI"]))
{
header("HTTP/1.0 404 Not Found");
header('Location: /');
exit;
}
// IF A NON-PHP SCRIPT IS NOT FOUND, TRY IT WITH PHP
$arr = explode('?', $_SERVER["REQUEST_URI"]);
$arr[0] .= '.php';
$uri = implode('?', $arr);
header("HTTP/1.1 301 Moved Permanently");
header("Location: $uri");
exit;
}
// IF NO REQUEST URI
header("HTTP/1.0 404 Not Found");
header('Location: /');
exit;
HTH, ~Ray
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
where is the r/ comming from? you never mentioned it before ...
ASKER
If I use the r/ it doesn't interfere with Joomla functionality!
Thx Greg
Thx Greg
so you rewriting only URLs which contain r/ now, that was not your question, just wondering ...
ASKER
I found a solution elsewhere.
RewriteRule ^([^/]*) /page.php?str=$1 [L]
# if so, you may try
RewriteRule ^([^/]*)$ /page.php?str=$1 [L]