#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] почему это не работает