Mod_rewrite vérifier si le fichier php existe
Je suis en train d'écrire quelques règles de mod_rewrite. Tout fonctionne bien pour le moment. Pour le moment mon générique Url ressembler à ceci:
http://website.com/about-us
http://website.com/privacy
Pour le moment, ces 2 liens sont mod_rewritten à content.php
, parce que about-us
et privacy
n'existe pas .php les fichiers, mais plutôt, leur contenu est stocké dans une base de données, qui content.php récupère.
J'ai une autre url:
http://website.com/contact-us
Qui n'existe pas en tant que .fichier php, car il contient des données personnalisées.
Comment puis-je vérifier pour voir si contact-us.php
existe. Si elle le fait, rediriger website.com/contact-us
à website.com/contact-us.php
, sinon, rediriger vers website.com/content.php
Ci-dessous est mon mod_rewrite fichier tel qu'il est:
RewriteEngine On
# I want the following condition and rule to look to see if the .php file exists,
# and if it does, redirect to the physical page, otherwise, redirect to content.php
RewriteCond %{DOCUMENT_ROOT}/([a-zA-Z0-9\-_]+).php -f
RewriteRule ^([a-zA-Z0-9\-_]+)\.php$ [L]
RewriteRule ^([a-zA-Z0-9\-_]+)$ /content.php [L]
RewriteRule ^(product1|product2|product3)/(designer1|designer2|designer3)$ /search.php?productType=$1&designer=$2 [L]
RewriteRule ^sale/(product1|product2|product3)$ /search.php?sale=1&productType=$1 [L]
Si vous avez besoin de plus d'informations, s'il vous plaît laissez-moi savoir!
J'apprécie les réponses 🙂
OriginalL'auteur Phil Cross | 2013-10-27
Vous devez vous connecter pour publier un commentaire.
Changer votre
.htaccess
code deJ'ai également simplifié le modèle correspondant à vos autres
RewriteRule
s. Notez l'utilisation de[QSA]
transmettre toute requête supplémentaire automatiquement les paramètres et[NC]
de faire le match de la casse.Supprimer la
/
entre%{DOCUMENT_ROOT}%{REQUEST_URI}
.Jetez aussi un oeil à la plus simple pattern matching pour vos autres
RewriteRule
s.Juste testé dans son intégralité, malheureusement, même si la page n'existe pas, il est toujours d'essayer de rediriger vers la page physique, et de ne pas content.php
S'il vous plaît essayer à l'aide de
%{REQUEST_FILENAME}
partout, c'est à dire remplacer%{DOCUMENT_ROOT}%{REQUEST_URI}
avec%{REQUEST_FILENAME}
. Avant de faire ce changement, assurez-vous que ce n'est pas un problème de cache navigateur par compensation et premiers essais.OriginalL'auteur Ravi Thapliyal
Je voudrais utiliser ce:
OriginalL'auteur jacouh