Je le code suivant dans mon .htaccess:Mod Rewrite production 404 Lorsque Chenilles (fonctionne très bien vus dans le navigateur)
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Mon joli lien de conversion est fait sur mon index.php. Si l'utilisateur recherche quelque chose qui n'existe pas, un en-tête 404 est produit, sinon le contenu est affiché.
Tout cela est bien et dandy, mais quand un crawler ou quelque chose essaie d'afficher le code HTML, ils reçoivent une erreur 404.
Par exemple:
http://www.jasonleodurbin.com/portfolio Ce lien devrait fonctionner correctement.
Si vous essayez de le valider avec un validateur HTML, cela ne fonctionne pas. Le crawler dit qu'il obtient un 404. Je reçois la même chose pour le partage de Facebook.
J'ai essayé de supprimer l'en-tête d'erreur 404, et je reçois toujours le même problème.
Quelle est l'affaire? Aucune suggestion?
EDIT:
Nouveau .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^jasonleodurbin\.com$ [NC]
RewriteRule ^(.*)$ http://www.jasonleodurbin.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)/$ index.php?go=$1&app=1 [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)?success=true index.php?go=$1&success=1 [NC,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+) index.php?go=$1 [NC,L,QSA]
Traitement:
globals.php
if(!isset($_GET['go']) || $_GET['go'] == "") $_GET['go'] = "home";
header.php
if(isset($_GET['go']) && [email protected](strtolower($_GET['go']).".php",'r')){
//header("HTTP/1.0 404 Not Found");
define("FAIL",true);
$_GET['go'] = "error";
}
else {
define("FAIL",false);
Header('HTTP/1.1 200');
}
if(FAIL) define("GOSUB",DIR);
if(isset($_GET['app'])) define("GOSUB","../");
else define("GOSUB","");
J'ai aussi essayé cela pour le index.php:
<?Header('HTTP/1.1 200 OK');?>
<? require_once("header.php");?>
<? require_once(strtolower($_GET['go'].".php"));?>
</div>
</div>
<?
if(!defined("FOOTER"))define('WP_USE_THEMES', false);
define("FOOTER",true);
include("blog/index.php");
?>
<!--[if IE]>
<a href='http://www.google.com/chrome' title='Get Google Chrome : A Better Way To Browse' class='noie sprite-1'>IE Sucks</a>
<![endif]-->
<!--[if lt IE 7]>
<div style='position:absolute;top:60px;left:0px;'><b>IE 6</b>?! Dude, upgrade. <br>Click the link above to get Google Chrome.</div>
<![endif]-->
</body>
</html>
Quelque chose envoie le 404 avant que je puisse même envoyer 200
J'utilise WordPress pour le/blog sub. – Jason
@Jason, pouvez-vous poster le contenu de votre fichier index.php? S'il s'agit de votre fichier .htaccess, il doit être placé dans le répertoire/blog sinon wordpress prendra le contrôle des pages. – shamittomar
Je vais éditer mon post original avec mon .htaccess édité et le traitement que je fais. – Jason