Переписывание URL влияет на значения GET

#php #.htaccess #url-rewriting

Вопрос:

Я переписал этот URL-адрес :

 http://localhost/mysite/admin/edit-post.php?edit-post=post1
 

На этот URL-адрес :

 http://localhost/mysite/admin/edit-post/post1
 

Использование этого условия перезаписи :

 RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/edit-post/(. )/?$ admin/edit-post.php?edit-post=$1 [L] 

И мой PHP-код таков :

 <a href="edit-post/<?php echo $post_detail['slug'] ?>" >Edit</a> 

URL-адрес переписан, и все в порядке, и теперь проблема начинается.

Я пытаюсь получить сведения о публикации и отобразить их на своей странице редактирования, когда я нажимаю «Редактировать», я получаю значение нажатой публикации с помощью метода get, Поэтому вот код, который я использую.

 if (isset($_GET['edit-post'])) {
    $post = $_GET['edit-post'];
    $query = "SELECT * FROM posts WHERE slug = '$post' ";  
  [My fetch code].... 
} 

Теперь я получаю от этого значения get следующее : post1.php/post1

Но что мне нужно, так это : сообщение 1

 Getting Wrong
$query = "SELECT * FROM posts WHERE slug = 'post1.php/post1' ";

Expected
$query = "SELECT * FROM posts WHERE slug = 'post1' "; 

Надеюсь, я хорошо объяснил свою проблему. Пожалуйста, помогите, как я могу решить эту проблему.

Комментарии:

1. Кто-нибудь, пожалуйста, помогите, я больше часа ломал голову над этой проблемой.

2. Ваше правило выглядит так, как будто оно должно работать, но, возможно, ваши другие правила противоречат этому. Пожалуйста, разместите свой полный файл htaccess в вопросе.

3. @ChrisHaas Это другой вопрос.

4. Попробуйте отключить MultiViews , это чаще всего является виновником, когда у вас есть такое частичное перекрытие между поддельным путем и физически существующими файлами.