Dejan31 Posted December 25, 2015 Share Posted December 25, 2015 (edited) Okay, I don't know if this section of the site is appropriate for this problem, but this is a burning one. I asked this on StackOverflow, but - according to them - this is not worth answering... The PHP file is in the root directory. I have a URL: www.mysite.com/Š.php?open=Šambala The PHP file: <?php switch($_GET["open"]){ case "Šambala": include("/Path/to/the/file/Shambala.html"); break; } ?> Now, when I click on the above URL, it returns 404... I don't know is the problem in the unicode file name of "Š.php", or in my .htaccess file, which is listed below. Mod_rewrite is enabled (RewriteEngine On). The .htaccess file: DirectoryIndex Index.html Index.htm Index.php Index.php3 Index.phtml Index.php5 Index.shtml Default.html Default.htm Default.php index.html index.htm index.php index.php3 index.phtml index.php5 index.shtml default.html default.htm default.phpIndexIgnore *DefaultLanguage en-USSetEnv TZ Europe/BelgradeOptions All -Indexes +MultiViews +FollowSymLinksAddType 'text/html; charset=UTF-8' htmlIndexIgnore *.wmv *.mp4 *.avi *.pdfLimitRequestBody 10240000AddDefaultCharset UTF-8ServerSignature OffErrorDocument 400 /400/ErrorDocument 403 /403/ErrorDocument 404 /404/RewriteEngine On <IfModule mod_rewrite.c>RewriteCond %{REQUEST_URI} /+[^\.]+$RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]</IfModule> Edited December 25, 2015 by Dejan31 Quote Link to comment Share on other sites More sharing options...
QuickOldCar Posted December 25, 2015 Share Posted December 25, 2015 All unsafe characters should be encoded in the url. See RFC 1738 for what should be allowed Quote Link to comment Share on other sites More sharing options...
requinix Posted December 25, 2015 Share Posted December 25, 2015 If you're getting a 404 then the PHP isn't executing in the first place. Try with just S.php and see if it works. Quote Link to comment Share on other sites More sharing options...
Dejan31 Posted December 25, 2015 Author Share Posted December 25, 2015 (edited) If you're getting a 404 then the PHP isn't executing in the first place. Try with just S.php and see if it works. Yes, I thought so too. It works well with all the other letters, except Š, Đ, Č, Ć and Ž... Note that it worked perfectly with my previous hosting provider, but when I switched to a new one, the problem occured. Should I encode the name of file itself, or just add the encoded name in the link that opens it? Or something else? Edited December 25, 2015 by Dejan31 Quote Link to comment Share on other sites More sharing options...
Dejan31 Posted December 26, 2015 Author Share Posted December 26, 2015 So no solution? PHP is not allowing unicode file name? Quote Link to comment Share on other sites More sharing options...
requinix Posted December 26, 2015 Share Posted December 26, 2015 Might it be running on Windows? Quote Link to comment Share on other sites More sharing options...
Dejan31 Posted December 27, 2015 Author Share Posted December 27, 2015 Might it be running on Windows? No, it’s Linux. Quote Link to comment Share on other sites More sharing options...
requinix Posted December 28, 2015 Share Posted December 28, 2015 Huh. Linux typically handles Unicode filenames well. Are you absolutely sure the file is named correctly? Do you have shell access? SSH to the server, make sure your client is set to use UTF-8 encoding, and do an ls of the directory to see if the file is called Š.php. Quote Link to comment Share on other sites More sharing options...
Jacques1 Posted December 28, 2015 Share Posted December 28, 2015 Why on earth do you want non-ASCII filenames, anyway? This is user-hostile (most people don't even have that character on their keyboard), it's obviously a pain to implement (at least in your environment), and it essentially limits your website to a small geographical area forever. The point of a URL is to uniquely and permanently(!) identify a resource. That means it's definitely not the right place to play around with fancy characters. Quote Link to comment Share on other sites More sharing options...
Dejan31 Posted December 28, 2015 Author Share Posted December 28, 2015 Why on earth do you want non-ASCII filenames, anyway? This is user-hostile (most people don't even have that character on their keyboard), it's obviously a pain to implement (at least in your environment), and it essentially limits your website to a small geographical area forever. The point of a URL is to uniquely and permanently(!) identify a resource. That means it's definitely not the right place to play around with fancy characters. Because I'm from Serbia, and the site is in Serbian, so the five files are named Š Đ Č Ć Ž (Unicode). And my keyboard is made for Adriatic region. Not a pain actually, as I said above it worked fine with my previous hosting provider, but when I migrated the impossible happened, although the new one also uses Linux. Huh. Linux typically handles Unicode filenames well. Are you absolutely sure the file is named correctly? Do you have shell access? SSH to the server, make sure your client is set to use UTF-8 encoding, and do an ls of the directory to see if the file is called Š.php. The files are fully named literally as Š.php, Đ.php, Č.php, Ć.php and Ž.php and they all use the "switch case" command, and also they worked well until now when I migrated the site. So, the problem is either in the server my site is hosted on, or in my files's names, that's why I asked here for help to resolve it. The Apache's default charset is set on UTF-8, as my hosting provider just told me, and I added the following at the top of my .htaccess file: IndexIgnore * IndexOptions +Charset=UTF-8 DefaultLanguage en-US SetEnv TZ Europe/Belgrade SetEnv SERVER_ADMIN dejan@fmdh.rs Options All -Indexes +MultiViews +FollowSymLinks AddType 'text/html; charset=UTF-8' html Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.