有没有办法创建假目录并通过 .htaccess 为它们赋值?
Is there a way to create fake directories and assign them a value via .htaccess?
目标是在 HTTP_HOST 和 REQUEST_URI 之后创建一个“假”语言子目录。
[Issue]
localhost/public_html causes 404, but localhost/public_html/index works.
当前代码:
ErrorDocument 404 /public_html/404.php
ErrorDocument 500 /public_html/500.php
DirectoryIndex index.php
RewriteEngine On
RewriteRule ^$ /en/ [L,R=301]
# ASSIGN ENGLISH LANGUAGE PARAMETER IF NOT FOUND IN URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^(en|id|fr|ru|de|es|ro|tr|zh|ar)/ /en%{REQUEST_URI} [L,NC,R=302]
# ASSIGN LANGUAGE PARAMETER A VALUE IF FOUND IN URL
RewriteRule ^(en|id|fr|ru|de|es|ro|tr|zh|ar)/(.*) ?language= [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ .php [L,NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+?)/?$ .html [L,NC]
文件夹目录:
xampp root folder
[
- public_html
]
website folder (public_html)
[
- .htaccess
- index.php
- contact.php
- style.css
- etc.php
]
更新:
感谢anubhava,问题已经成功解决!
确保这 2 条规则是您的 最顶层 规则:
ErrorDocument 404 /public_html/404.php
ErrorDocument 500 /public_html/500.php
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ /en/ [L,R=301]
# ASSIGN ENGLISH LANGUAGE PARAMETER IF NOT FOUND IN URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^(en|id|fr|ru|de|es|ro|tr|zh|ar)/ /en%{REQUEST_URI} [L,NC,R=302]
# ASSIGN LANGUAGE PARAMETER A VALUE IF FOUND IN URL
RewriteRule ^(en|id|fr|ru|de|es|ro|tr|zh|ar)/(.*) ?language= [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ .php [L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+?)/?$ .html [L]
确保在测试此更改之前完全清理浏览缓存。
目标是在 HTTP_HOST 和 REQUEST_URI 之后创建一个“假”语言子目录。
[Issue]
localhost/public_html causes 404, but localhost/public_html/index works.
当前代码:
ErrorDocument 404 /public_html/404.php
ErrorDocument 500 /public_html/500.php
DirectoryIndex index.php
RewriteEngine On
RewriteRule ^$ /en/ [L,R=301]
# ASSIGN ENGLISH LANGUAGE PARAMETER IF NOT FOUND IN URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^(en|id|fr|ru|de|es|ro|tr|zh|ar)/ /en%{REQUEST_URI} [L,NC,R=302]
# ASSIGN LANGUAGE PARAMETER A VALUE IF FOUND IN URL
RewriteRule ^(en|id|fr|ru|de|es|ro|tr|zh|ar)/(.*) ?language= [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ .php [L,NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+?)/?$ .html [L,NC]
文件夹目录:
xampp root folder
[
- public_html
]
website folder (public_html)
[
- .htaccess
- index.php
- contact.php
- style.css
- etc.php
]
更新: 感谢anubhava,问题已经成功解决!
确保这 2 条规则是您的 最顶层 规则:
ErrorDocument 404 /public_html/404.php
ErrorDocument 500 /public_html/500.php
DirectoryIndex index.php
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(index\.php)?$ /en/ [L,R=301]
# ASSIGN ENGLISH LANGUAGE PARAMETER IF NOT FOUND IN URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^(en|id|fr|ru|de|es|ro|tr|zh|ar)/ /en%{REQUEST_URI} [L,NC,R=302]
# ASSIGN LANGUAGE PARAMETER A VALUE IF FOUND IN URL
RewriteRule ^(en|id|fr|ru|de|es|ro|tr|zh|ar)/(.*) ?language= [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ .php [L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^([^.]+?)/?$ .html [L]
确保在测试此更改之前完全清理浏览缓存。