2017-10-09 3 views
0

Je suis en train de faire correspondre le urls qui se terminent par un tiret et un ensemble de nombres (ou un seul numéro), mais le travail ne marche pas:urls mod-rewrite .htaccess se terminant par « -XXXX » (tableau de bord, chiffres)

Exemple: domain.com/my-product-36-inches-long-135355

# rewrite urls 
Options +SymLinksIfOwnerMatch +FollowSymLinks -Indexes 
RewriteEngine On 
RewriteBase/


# product 
RewriteRule ^shop/-([0-9,]+)/?$ product.php?url_key=$1 [NC,L] 

# category 
RewriteRule ^shop/([^/.]+)$ category.php?url_key=$1 [NC,L] 

# sub category 
RewriteRule ^shop/([^/.]+)/([^/.]+)$ subcategory.php?url_key=$1&url_key2=$2 [NC,L] 

# list (from subcategory page; will have 3 variables) 
RewriteRule ^shop/([^/.]+)/([^/.]+)/([^/.]+)$ list.php?mr=3&url_key1=$1&url_key2=$2&url_key3=$3 [NC,L] 

# list (from category page; will have 4 variables) 
RewriteRule ^shop/([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)$ list.php?mr=4&url_key1=$1&url_key2=$2&url_key3=$3&url_key4=$4 [NC,L] 



# business types 
RewriteRule ^shop/restaurant-supply-business-type section.php?id=1 [NC,L] 

# login 
RewriteRule ^shop/customer/account/login login.php [NC,L] 

# brands 
RewriteRule ^shop/shopby/brand brands.php [NC,L] 

# professional services 
RewriteRule ^shop/professional-services professional_services.php [NC,L] 

# pages 
RewriteRule ^locations/([^/.]+)$ page.php?url_key=locations/$1 [NC,L] 
RewriteRule ^locations page.php?url_key=locations [NC,L] 
RewriteRule ^testimonials page.php?url_key=testimonials [NC,L] 
RewriteRule ^contact-us page.php?url_key=contact-us [NC,L] 
RewriteRule ^equipment-checklist page.php?url_key=equipment-checklist [NC,L] 
RewriteRule ^shipping page.php?url_key=shipping [NC,L] 
RewriteRule ^returns page.php?url_key=returns [NC,L] 
RewriteRule ^lease-financing page.php?url_key=lease-financing [NC,L] 
RewriteRule ^news page.php?url_key=news [NC,L] 
RewriteRule ^advice page.php?url_key=advice [NC,L] 
RewriteRule ^about-us page.php?url_key=about-us [NC,L] 
RewriteRule ^careers page.php?url_key=careers [NC,L] 
RewriteRule ^privacy page.php?url_key=privacy [NC,L] 
RewriteRule ^terms-of-use page.php?url_key=terms-of-use [NC,L] 
RewriteRule ^page/([^/.]+)$ page.php?url_key=$1 [NC,L] 
RewriteRule ^section/([^/.]+)$ section.php?url_key=$1 [NC,L] 


# Remove all .php extensions without interfering with .js or .css. 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !pagespeed 
RewriteRule ^([^.]+?)/?$ $1.php [L] 

# Remove index from url. 
# RewriteCond %{REQUEST_FILENAME} !-f 
# RewriteCond %{REQUEST_FILENAME} !-d 

# RewriteRule ^([^.]+?)/?$ index.php?$1 [L,QSA] 

Répondre

0

vous pouvez faire correspondre seulement la partie se termine en utilisant cette règle:

RewriteRule ^shop/.*-([0-9,]+)/?$ product.php?url_key=$1 [NC,QSA,L] 
+0

Merci pour la réponse, mais je ne pouvais pas le faire fonctionner. Même 404 je reçois. Voici un exemple réel d'url de ne fonctionne pas:/shop/fontaine-jar-2-qt-22916 – ToddN

+0

Mis à jour pour afficher tout. Je n'ai pas de répertoire de magasin, tout est dans la racine. Mon problème est la catégorie, la sous-catégorie, la liste et le produit doivent tous utiliser/shop /. – ToddN

+0

Essayé, même chose. J'ai quelque chose à voir avec ça qui correspond à la même chose que la # catégorie que je crois. Je peux obtenir #product de travailler avec ceci: 'RewriteRule^shop/product /([ ^/.]+)$ product.php? Url_key = $ 1 [NC, L]' mais j'en ai besoin pour être seulement à "/ shop/"sans le/product/dans l'url. – ToddN

0

Si vous voulez faire correspondre la fin de uri qui contient (-numbers ou nombres) utilise seulement le g:

RewriteRule ^shop/(.*)(-([0-9]+)|([0-9]+))$ product.php?url_key=$2 [R,L,NE] 

Si (-Numéros ou seulement un chiffre de chiffres), utilisez les éléments suivants:

RewriteRule ^shop/(.*)(-([0-9]+)|\b[0-9]\b)$ product.php?url_key=$2 [R,L,NE]