url в новый формат

#apache #.htaccess #mod-rewrite #url-rewriting

#apache #.htaccess #модификация-переписать #url-переписывание

Вопрос:

Ниже приведен мой файл .htaccess. Он не работает на локальном хостинге apache (www — корневой каталог на C:/apache/www) «url» — это каталог, и я хочу выводить его следующим образом

http://localhost/url/index.php?username=shah Для http://localhost/url/shah

Я меняю файл хоста Windows 127.0.0.1 localhost, а также включаю mod_rewrite в файле httpd.conf и разрешаю переопределять none на AllowOverride All и корневой каталог на C:/apache/www

 //==============================HTaccess==================================//
 Options:
# -MultiViews: Turns off multiviews so it doesn't interfer with our rewrite rules
# -Indexes: Stop directory listings
#  FollowSymlinks: Let out rewrite rules work

Options -MultiViews -Indexes  FollowSymlinks

<IfModule mod_security.c>
    # Turn off mod_security filtering.
    # SecFilterEngine Off

    # The below probably isn't needed, but better safe than sorry.
    SecFilterScanPOST Off
</IfModule>

ErrorDocument 404 /url/404.php

<IfModule mod_php5.c>
    php_value register_globals 0
    php_value magic_quotes_gpc 0
    php_value session.auto_start 0
    php_value safe_mode 0
</IfModule>

<IfModule sapi_apache2.c>
    php_value register_globals 0
    php_value magic_quotes_gpc 0
    php_value session.auto_start 0
    php_value safe_mode 0
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /url/
RewriteRule ^([a-zA-Z0-9_-] )$ index.php?username=$1
RewriteRule ^([a-zA-Z0-9_-] )/$ index.php?username=$1

#RewriteRule ^view-content/([^/]*)/([^/]*).html$ content.php?pageid=$1amp;title=$2 [L]

</IfModule>

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE application/x-javascript text/css text/html text/xml
</IfModule>
//==============================HTaccess==================================//
  

Пожалуйста, скажите мне, что делать?

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

1. Можете ли вы объяснить, что именно не работает? Это только RewriteRule или все целиком. файл htaccess игнорируется?

2. Пожалуйста, прочитайте ответ ниже

Ответ №1:

Попробуйте это:

 <IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /url/
RewriteCond %{QUERY_STRING} username=(.*)
RewriteRule index.php$ /url/%1
  

Надеюсь, это поможет вам … 🙂

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

1. приведенный выше пример перенаправления на страницу не найден

2. Можете ли вы сказать мне, какой URL он перенаправляет?

Ответ №2:

Если вы действительно хотите перенаправить запрос /url/index.php?username=shah извне на /url/shah , попробуйте использовать это правило:

 RewriteCond %{QUERY_STRING} ^(([^amp;]*amp;)*?)username=([^amp;] )amp;*(.*)
RewriteRule ^index.php$ /url/%3?%1%4 [L,R=301]
  

В противном случае, для обратного направления:

 RewriteCond $0 !=index.php
RewriteRule ^[^/] $ index.php?username=$0 [L,QSA]
  

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

1. Спасибо, ваш код работает, но страница не найдена, ее URL-адрес изменяется локально, а страница отображения не найдена. Онлайн phpprojects.netau.net/url/index.php?username=hereusername ничего, отображающего только строку запроса

2. Мой код для is working index.php?username=shah и теперь я хочу узнать об этой проблеме RewriteRule ^view-content/([^/]*)/([^/]*). html$ content.php?pageid= $1amp; title = $ 2 [L] почему это не работает