Tôi gặp sự cố khi thiết lập Apache với mod_rewrite trên máy phát triển của mình. Mod_rewrite đang hoạt động và hoạt động tốt đối với một số quy tắc. Một số quy tắc không hoạt động như dự định, như quy tắc này:
RewriteRule ^static/([^/]+)/([^/]+) /static.php?sISOCode=$1&sPage=$2
Trong static.php tôi làm điều này (để gỡ lỗi):
<?php
print_r($_GET); print_r($_POST); print_r($_SERVER); die();
Bản in nào (đã xóa một số mục khỏi mảng $ _SERVER):
Array
(
)
Array
(
)
Array
(
[SERVER_SIGNATURE] => <address>Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch Server at alpha.prove.no Port 80</address>
[SERVER_SOFTWARE] => Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => /home/veg/workspace/project
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => /home/veg/workspace/project/static.php
[REMOTE_PORT] => 38954
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /static/no/startCar
[SCRIPT_NAME] => /static.php
[PATH_INFO] => /no/startCar
[PATH_TRANSLATED] => redirect:/index.php/startCar
[PHP_SELF] => /static.php/no/startCar
[argv] => Array
(
)
[argc] => 0
)
Bằng cách nào đó, các tham số GET được đặt theo quy tắc không được thông qua. Tệp .htaccess tương tự được sử dụng trên các thiết lập khác và hoạt động tốt. Cấu hình Apache cho miền ảo này:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName project.example.com
DocumentRoot /home/veg/workspace/project
<Directory /home/veg/workspace/project>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Nhật ký truy cập và nhật ký lỗi không xuất hiện gì khi điều này xảy ra. Bất kỳ ý tưởng đánh giá cao.
Một ví dụ về quy tắc hoạt động, cho cùng một tệp:
RewriteRule ^faq/?$ /static.php?sISOCode=no&sPage=faq