我对 apache 中的 Rewrite 不太了解,但我的 .htaccess 文件有问题。
原来的 .htaccess 是
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-_.]*)$ /profile.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
# Redirect non-www to www:
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Unless directory, remove trailing slash
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://www.domain.com/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://www.domain.com/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
ErrorDocument 404 /404.html
第一次重写是针对虚 url,另一个是将非 www 重定向到 www,然后将 .php 重定向到扩展名 less 并将 .php 文件重定向到扩展名 less,
我面临的问题是,如果我请求 www.domain.com/ttt.php 并且如果 ttt 不存在,那么它会将我重定向到http://www.domain.com/profile?id=ttt.php 另外,我希望重写用于 php 文件而不是其他类型,假设我有 ttt.png 文件并且我打开 www.domain.com/ttt 它会打开图像而不是显示 404 错误。
其他类型的文件也会发生类似的情况。如果名称很常见,它会首先打开 .txt 文件。
感谢您对此进行的任何更改,我真的不想弄乱我的网站。