2016-12-21 15 views
1

Я пытаюсь передать переменные от симпатичной URL, который я могу achive используя следующие:Довольно изменение URL переменной seporator

domain.com/exercises/lunge+with+dumbells

И это в моем .htaccess файле:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9+]+)$ index.php?exercise=$1 
RewriteRule ^([a-zA-Z0-9+]+)/$ index.php?exercise=$1 

Какие поступает в php, используя:

$urlVars = $_GET["exercise"];

Однако, мне нужны URL, чтобы читать так:

domain.com/exercises/lunge-with-dumbells

я могу получить эту работу, используя

exercises/?exercise=lunge-with-dumbells и это PHP функции:

$urlVars = $_GET["exercise"]; 
$newString = str_replace("-", " ", $urlVars); 

однако, я бы как симпатичный URL-адрес с переменной строкой, разделенной -, а не +

Большое спасибо.

ответ

2

Для того, чтобы ваш .htaccess совпадать с URL prettified с «-» разделителем, а не «+» сепаратором вам просто нужно изменить регулярное выражение, которое управляет правилами перезаписи в файл PHP:

изменить правила от:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9+]+)$ index.php?exercise=$1 
RewriteRule ^([a-zA-Z0-9+]+)/$ index.php?exercise=$1 

к:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9-]+)$ index.php?exercise=$1 
RewriteRule ^([a-zA-Z0-9-]+)/$ index.php?exercise=$1 

разделить регулярное выражение в его простейшие компоненты Мы собираемся создать тот, который говорит

^// match the beginning of a strings that start with 
    ( 
    [ // a pattern consisting of 
    a-z //a lowercase alphabet letter 
    A-Z //a uppercase alphabet letter 
    0-9 //a digit 
    - //and the minus sign (here we changed from the + sign to the new value) 
    ] 
    + //one or more occurence of the combination described above 
    ) 

для получения более подробной информации о регулярных выражениях и .htaccess, пожалуйста, обратитесь к: https://httpd.apache.org/docs/current/rewrite/intro.html

 Смежные вопросы

  • Нет связанных вопросов^_^