Я пытаюсь сделать мои URL-адреса более красивыми в определенном подкаталоге на моем сайте, используя переписать для изменения:
www.example.com/sub/file/{some_number}/
внутренне:
www.example.com/sub/file.php?var={some_number}
И я продолжаю получать 404. Я уже удаляю расширение .php с моего сайта, используя файл .htaccess, который выглядит так:
RewriteEngine on # ## Internally rewrite extensionless file requests to .php files ## # # If the requested URI does not contain a period in the final path-part RewriteCond %{REQUEST_URI} !(\.[^./]+)$ # and if it does not exist as a directory RewriteCond %{REQUEST_FILENAME} !-d # and if it does not exist as a file RewriteCond %{REQUEST_FILENAME} !-f # then add .php to get the actual filename RewriteRule (.*) /$1.php [L] # ## Externally redirect clients directly requesting .html page URIs to extensionless URIs # # If client request header contains html file extension RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^.]+\.)+html\ HTTP # externally redirect to extensionless URI RewriteRule ^(.+)\.html$ http://www.dirtycoffee.com/$1 [R=301,L] # If client request header contains php file extension RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /([^.]+\.)+php\ HTTP # externally redirect to extensionless URI RewriteRule ^(.+)\.php$ http://www.dirtycoffee.com/$1 [R=301,L]
Моя текущая попытка – добавить строку вверху, например:
#Subdirectory rewrite: RewriteRule ^sub/file/([0-9]+)/?$ sub/file?num=$1 [L] # Handle requests for file
Я знаю, что у меня должны быть противоречивые правила, но я думал, что [L] просто остановится, если будет применено новое правило.
Вместо:
RewriteRule ^sub/file/([0-9]+)/?$ sub/file?num=$1 [L]
Пытаться:
RewriteRule ^sub/file/([0-9]+)/?$ /sub/file.php?num=$1 [L]
Вы правы, что [L]
прекратит обработку правил, но это также означает, что вы не можете устранить расширение .php, поскольку это правило ниже этого. Также обратите внимание на ведущую косую черту.